Skip to content

Pay carer benefits only for caring for a severely disabled person - #2860

Draft
MaxGhenis wants to merge 5 commits into
mainfrom
claude/carer-benefits-severely-disabled-7ga0a7
Draft

MaxGhenis wants to merge 5 commits into
mainfrom
claude/carer-benefits-severely-disabled-7ga0a7

Conversation

@MaxGhenis

@MaxGhenis MaxGhenis commented Nov 3, 2026 •

Copy link
Copy Markdown
Collaborator

Fixes #2310

Reproducer: policyengine_uk/tests/policy/baseline/gov/dwp/carers_allowance_cared_for_person.yaml::England carer of a partner with no qualifying disability benefit gets no Carer's Allowance
axiom: TheAxiomFoundation/rulespec-uk#534 queued

What and why

The new person input cares_for_severely_disabled_person (YEAR, bool, default true) records whether the person a carer cares for, in the household or outside it, gets a qualifying benefit. For Carer's Allowance the benefit must make them a severely disabled person (s.70(2)), and for Carer Support Payment it must appear among the qualifying disability benefits (SSI 2023/302 reg 2(2)).

A person meets the caring condition through caring hours only when care_hours reaches the minimum (35 a week) and the input holds. The formulas apply that test in four places:

  • carers_allowance_weekly_by_part_of_year (policyengine_uk/utils/carers_allowance_taper.py), behind carers_allowance_pre_couple_limit and so Carer's Allowance: only the meets_work_condition line and its comment change, with no new import;
  • carer_support_payment_pre_couple_limit;
  • is_carer_for_benefits, which the Universal Credit carer element and the model's other carer tests read;
  • partners_care_for_same_severely_disabled_person, whose explained_by_hours decides whether caring hours explain an entitlement. Where a user supplies an entitlement for a person whose input is false, it now counts as an award there, so it can show that two partners care for different people.

A reported award (carers_allowance_reported, the model's reported-receipt input for both benefits) still counts whatever the input says, since DWP or Social Security Scotland pays it.

Why the input defaults to true. Survey caring hours count care for anyone, in or outside the household, and the data don't say whom a carer cares for. A check on the household's own disability benefits would take the allowance from carers of people who live elsewhere. So the model takes the person cared for to qualify unless the input says otherwise.

What a user sets. In a household calculation, set cares_for_severely_disabled_person to false for a carer whose caring hours go to someone with none of the qualifying benefits. #2310's carer (aged 45, caring 40 hours a week for a partner with no disability benefit, England, 2026) then gets no Carer's Allowance, where main pays £4,495.40 (52 × £86.45).

The law

  • SSCBA 1992 s.70(1): "A person shall be entitled to a carer’s allowance for any day on which he is engaged in caring for a severely disabled person if— ...". Parliament defines a "severely disabled person" in s.70(2) by the benefit payable in respect of them: attendance allowance, the DLA care component at the highest or middle rate, the PIP daily living component, armed forces independence payment, the Scottish disability payments it lists, or a payment that SI 1976/409 reg 3 prescribes.
  • SSI 2023/302 reg 5(1): "Carer Support Payment may only be paid to an individual in respect of a period during which that individual provides regular and substantial care to a person to whom a qualifying disability benefit is normally payable (a “cared for person”)". The Scottish Ministers list those benefits in reg 2(2).
  • DWP includes the Universal Credit carer element (UC Regs 2013 reg 29) for a claimant with regular and substantial caring responsibilities for a severely disabled person. Under reg 30(1)(a) a claimant has them if "they satisfy the conditions for entitlement to a carer’s allowance", or would but for the earnings limit or residence in Scotland.

This PR leaves the list in gov.dwp.carers_allowance.qualifying_disability_benefits as it was. s.70(2) also names adult disability payment, child disability payment, Scottish adult DLA and pension age disability payment, which the model doesn't hold as variables (#2041).

Invariants

For households where no input supplies a carer benefit amount or entitlement:

  1. Leaving the input out gives the same values as setting it true, for carers_allowance, carer_support_payment, is_carer_for_benefits, is_entitled_to_carer_benefit, uc_carer_element, partners_care_for_same_severely_disabled_person and carer_minimum_guarantee_addition.
  2. Setting one person's input false never raises that person's carers_allowance or carer_support_payment, and never turns that person's is_carer_for_benefits or is_entitled_to_carer_benefit on. It never raises the benefit unit's uc_carer_element or carer_minimum_guarantee_addition, and never turns partners_care_for_same_severely_disabled_person on.
  3. Before the Carer's Allowance earnings taper (2030-31), setting every person's input false never raises any person's carers_allowance or carer_support_payment, or the benefit unit's amounts, and never turns any of those flags on.
  4. A person whose input is false and who has no reported award gets no Carer's Allowance or Carer Support Payment, before or after the overlapping-benefit adjustment, and has neither an entitlement to a carer benefit nor is_carer_for_benefits.
  5. Setting the input false for the people with a reported award leaves every person's carers_allowance and carer_support_payment as they were.

For couples where an input supplies each partner's entitlement to a carer benefit, true or false:

  1. partners_care_for_same_severely_disabled_person is false where, and only where, both partners have an entitlement and an award: a reported award, or an entitlement that caring hours for a severely disabled person don't explain (fewer than 35 hours, the input false, or no claim). Leaving the input out gives what setting it true gives, and setting inputs false never turns the flag on.

Without a supplied entitlement the input can't change partners_care_for_same_severely_disabled_person, so invariant 6 supplies one. A supplied entitlement that caring hours no longer explain counts as a second award, so it can give a couple a second carer premium or Universal Credit carer element. Invariants 1 to 5 exclude such households.

Two limits follow the law. Only one of two partners who care for the same person can have the award (s.70(7ZA); SSI 2023/302 reg 5(3)). So when one partner's input goes false, the model gives the award to the other, whose allowance and entitlement then rise. In 2026 a couple who both care 40 hours a week get £4,495.40 for the elder, and with the elder's input false £4,495.40 for the younger. Where an overlapping benefit takes the elder's award to nil, the couple go from nothing to the younger's £4,495.40. So invariant 2 compares only the person whose input changes, and the benefit unit. Under the taper the model gives the award to the partner with the larger one. Setting both inputs false can then give back a reported award: in 2031 the elder's tapered £3,987.02 returns once the younger's £5,115.42 on hours goes. So invariant 3 holds only before the taper. The property file runs both cases as tests.

Test plan

  • For policy changes: YAML tests whose expected values come from an external source. We worked each of the 14 cases by hand from the parameter files (rates that cite the up-rating orders and DWP's and Social Security Scotland's published rates), not from the model, with the arithmetic in each case's comment.

  • make format: ruff format and ruff check (0.17.2), ruff check --select F811,F821 and git diff --check report nothing.

  • Changelog fragment changelog.d/2310.fixed.md.

  • YAML, policyengine_uk/tests/policy/baseline/gov/dwp/carers_allowance_cared_for_person.yaml, 14 cases, which we worked by hand from the parameter files, with the arithmetic in each comment:

    • Carer's Allowance is paid for caring for someone with no qualifying disability benefit (SSCBA 1992 s. 70(1)-(2)) #2310's household in England and in Scotland, each with the input false and left out;
    • a Universal Credit claimant, each way;
    • a reported award in each country, and one above the earnings limit that keeps is_carer_for_benefits and the carer element;
    • a couple where only one partner's hours count;
    • a supplied entitlement that turns partners_care_for_same_severely_disabled_person false (two carer premiums, £5,007.60, where the input left out gives one, £2,503.80);
    • a pension-age carer's Pension Credit carer addition and carer premium, each way.
  • Properties, policyengine_uk/tests/test_cares_for_severely_disabled_person_properties.py: the six invariants above, plus the two executed limit cases. They cover benefit units of one or two adults and a qualifying young person, in every country, in 2024, 2026, 2030 and 2031, and batch each example into one simulation.

Results (on this branch unless stated):

  • The new YAML file: 14 cases pass. Every YAML test file that names care_hours, carers_allowance, carer_support_payment, is_carer_for_benefits or partners_care_for_same_severely_disabled_person (56 files): 978 cases pass.
  • Every Python test file that names them (45 files, one run each with -n 4): all pass, including the 8 tests of the new property file. policyengine_uk/tests/code_health: 3,092 pass.
  • Revert check, running these tests against main's formulas plus the new input variable: 6 of the 14 YAML cases fail (every input-false case except the reported-award ones), and so do 4 of the 8 property tests (invariants 4 and 6 and both limit tests). Invariants 1, 2, 3 and 5 also hold on main, where the input does nothing; the mutations below show that they catch a wrong gate.
  • Mutations, one copy of the branch each:
Mutation YAML cases that fail Property tests that fail
The input defaults to false 6 invariants 1 and 6, both limit tests
The input also gates the reported Carer's Allowance route 1 invariant 5, the taper limit test
explained_by_hours ignores the input (main's line) 1 invariant 6
Carer Support Payment ignores the input 1 invariants 2, 3 and 4
is_carer_for_benefits ignores the input 2 invariant 4
| instead of & in the Carer's Allowance gate 5 invariants 3 and 4, both limit tests
The input also gates the reported limb of is_carer_for_benefits 1 invariant 5

Aggregate impact

No dataset supplies the new input, which defaults to true, so every microsimulation result stays as on main. CI's report on the certified data agrees: "Aggregate impact on certified data: pass", with 0 checks broken by this change, 0 moves flagged and "No household's net income changes in any year".

Documentation

  • is_carer_for_benefits now describes the input instead of saying the hours limb "tests hours alone", and cites s.70.
  • partners_care_for_same_severely_disabled_person names the input among the reasons caring hours can fail to explain an entitlement.
  • uc_unable_to_provide_childcare, meets_uc_minimum_age_condition and docs/book/programs/gov/dwp/disability-legacy-benefits.md said the hours route did not check the person cared for. They now say it does so only through the input.
  • Two test comments that described the hours test (carer_premium.yaml, uc_childcare_work_condition_reg_32.yaml) now name the input.
  • carer_support_payment_pre_couple_limit cites reg 5.

🤖 Generated with Claude Code

SSCBA 1992 s.70(1) and (2) give Carer's Allowance only for caring for a
severely disabled person, SSI 2023/302 reg 5(1) pays Carer Support Payment
only for care of a person to whom a qualifying disability benefit is
normally payable, and UC Regs 2013 reg 30(1)(a) applies the Carer's
Allowance conditions to the carer element. The model tested caring hours
alone.

Add the person input cares_for_severely_disabled_person, which defaults to
true because survey caring hours don't say whom the carer cares for. The
hours route in carers_allowance_weekly_by_part_of_year,
carer_support_payment_pre_couple_limit, is_carer_for_benefits and the
explained_by_hours test of partners_care_for_same_severely_disabled_person
now needs it. Reported awards still count.

Fixes #2310

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Name DWP and Social Security Scotland, not the provisions, as the actors,
and attribute the carer element to UC Regs 2013 reg 29 with reg 30(1)
defining the caring responsibilities. Say that the model applies the
condition in Northern Ireland too.

Fix the sentences that said the care-hours interface does not check the
person cared for (disability-legacy-benefits.md) and the test comments that
listed the reasons caring hours fail to explain an entitlement
(carer_premium.yaml) or said is_carer_for_benefits reads only hours.

Add a YAML case for a reported award above the earnings limit, which keeps
is_carer_for_benefits and the carer element with the input false, and drop
an assertion of the same-person default from the couple case, where it
changes nothing.

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

Without a supplied entitlement the input can't change
partners_care_for_same_severely_disabled_person, so the properties gave no
evidence about explained_by_hours. Add a property over couples whose
entitlements an input supplies, true or false, for every person: the flag is
false exactly where both partners are entitled and have an award that caring
hours for a severely disabled person don't explain.

State the scope of the other invariants, name the actors in the module
docstring, and raise the tapered earner to 13,500 so the 2031 taper still
pays a partial award if the national living wage projection moves.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Setting the input false for people with a reported award now also leaves
is_carer_for_benefits as it was, except for a reported recipient who would
not claim. A mutant that gates the reported limb with the input passed every
property before; this assertion fails on it.

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

Copy link
Copy Markdown
Collaborator Author

AXIOM_ISSUE.md

Title: Encode the condition on the person cared for in Carer's Allowance (SSCBA 1992 s.70(1) and (2)) and Carer Support Payment (SSI 2023/302 reg 5(1))

Labels: pe-parity

## Module path and corpus citation

- **SSI 2023/302 reg 5 (extend the existing module).** Module `uk/regulations/ssi/2023/302/5.yaml`, corpus citation `uk/regulation/ssi/2023/302/5`. At `0497350d7` the module encodes only reg 5(2)'s minimum, `carer_support_payment_minimum_weekly_care_hours` (35). It lacks reg 5(1)'s cared for person condition. The condition needs the reg 2(2) definition of "qualifying disability benefit"; we haven't checked whether another module encodes that definition (proposed corpus citation `uk/regulation/ssi/2023/302/2`).
- **SSCBA 1992 s.70(1) and (2) (new module).** At `0497350d7` rulespec-uk encodes nothing from this section. Proposed module `uk/ukpga/1992/4/70.yaml`, corpus citation `uk/ukpga/1992/4/70`; follow the repository's layout for a UK Public General Act if it differs. The follow-up also needs SI 1976/409 reg 3(1) (prescribed payments) and reg 4 (35 hours), with proposed corpus citations `uk/regulation/uksi/1976/409/3` and `uk/regulation/uksi/1976/409/4`; we haven't checked whether rulespec-uk encodes either.

PolicyEngine/policyengine-uk#2310 reports that policyengine-uk pays Carer's Allowance on caring hours alone. Its fix (PolicyEngine/policyengine-uk#2860, not yet merged) adds the input `cares_for_severely_disabled_person`, which records whether the person cared for gets one of the s.70(2) benefits or SI 1976/409 reg 3(1) payments (for Carer's Allowance) or an SSI 2023/302 reg 2(2) qualifying disability benefit (for Carer Support Payment), because survey caring hours don't say whom a carer cares for.

## Law (verbatim)

Social Security Contributions and Benefits Act 1992 s.70(1) to (4), (7) and (7ZA) (legislation.gov.uk, fetched 2026-11-03):

> (1) A person shall be entitled to a carer’s allowance for any day on which he is engaged in caring for a severely disabled person if—
> (a) he is regularly and substantially engaged in caring for that person;
> (b) he is not gainfully employed; and
> (c) the severely disabled person is either such relative of his as may be prescribed or a person of any such other description as may be prescribed.

> (2) In this section, “severely disabled person” means a person in respect of whom there is payable either an attendance allowance or a disability living allowance by virtue of entitlement to the care component at the highest or middle rate or personal independence payment by virtue of entitlement to the daily living component at the standard or enhanced rate or armed forces independence payment under the Armed Forces and Reserve Forces (Compensation Scheme) Order 2011 (S.I. 2011/517) or adult disability payment by virtue of entitlement to the daily living component at the standard or enhanced rate or child disability payment by virtue of entitlement to the care component at the middle or highest rate or Scottish adult disability living allowance by virtue of entitlement to the care component at the middle or highest rate or pension age disability payment or such other payment out of public funds on account of his need for attendance as may be prescribed.

> (3) A person shall not be entitled to an allowance under this section if he is under the age of 16 or receiving full-time education.
> (4) A person shall not be entitled to an allowance under this section unless he satisfies prescribed conditions as to residence or presence in Great Britain.

> (7) No person shall be entitled for the same day to—
> (a) more than one allowance under this section; or
> (b) both an allowance under this section and carer support payment.
> (7ZA) Where, apart from this subsection, two or more persons would have a relevant entitlement for the same day in respect of the same severely disabled person, one of them only shall have that entitlement and that shall be such one of them—
> (a) as they may jointly elect in the prescribed manner; or
> (b) as may, in default of such an election, be determined by the Secretary of State in the Secretary of State’s discretion.

The Social Security (Invalid Care Allowance) Regulations 1976 (SI 1976/409) reg 3(1) (legislation.gov.uk, fetched 2026-11-03):

> (1) For the purposes of section 70 of the Contributions and Benefits Act (carer’s allowance) the prescribed payments out of public funds which constitute the persons in respect of whom they are payable as severely disabled persons are—
> (a) a payment under section 104 of the Contributions and Benefits Act (increase of disablement pension where constant attendance needed);
> (b) a payment such as is referred to in section 7(3)(b) of the Industrial Injuries and Diseases (Old Cases) Act 1975 (increase of an allowance under that Act where the person in respect of whom that allowance is payable requires constant attendance as a result of his disablement);
> (c) a payment under regulation 44 of the Social Security (Industrial Injuries) (Benefit) Regulations 1975 in respect of the need of constant attendance;
> (d) a payment by way of an allowance in respect of constant attendance on account of disablement for which a person is in receipt of a war disablement pension,
> being a payment the weekly rate of which is not less than the amount specified in paragraph 2(a) of Part V of Schedule 4 to the Contributions and Benefits Act.

SI 1976/409 reg 4(1) and (1A) (legislation.gov.uk, fetched 2026-11-03):

> (1) Subject to paragraph (1A) of this regulation, a person shall be treated as engaged and as regularly and substantially engaged in caring for a severely disabled person on every day in a week if, and shall not be treated as engaged or regularly and substantially engaged in caring for a severely disabled person on any day in a week unless, as at that week he is, or is likely to be, engaged and regularly engaged for at least 35 hours a week in caring for that severely disabled person.
> (1A) A person who is caring for two or more severely disabled persons in a week shall be treated as engaged and regularly and substantially engaged in caring for a severely disabled person only where he is engaged and regularly engaged for at least 35 hours in that week in caring for any one severely disabled person, considered without reference to any other severely disabled person for whom he is caring.

The Carer’s Assistance (Carer Support Payment) (Scotland) Regulations 2023 (SSI 2023/302) reg 2(2), two definitions (legislation.gov.uk, fetched 2026-11-03; the fetcher that produced this extract joins sub-paragraphs without spaces):

> “cared for person , other than where those words appear within the term “additional cared for person”” is a person described in regulation 5(1)

> “qualifying disability benefit” means—the daily living component of Adult Disability Payment at the standard or enhanced rate,the daily living component of Personal Independence Payment,the care component of Child Disability Payment at the middle or highest rate,the care component of Disability Living Allowance at the middle or highest rate, the care component of Scottish Adult Disability Living Allowance at the middle or highest rate, Pension Age Disability Payment, Attendance Allowance,Armed Forces Independence Payment, orConstant Attendance Allowance—at or above the normal maximum rate with Industrial Injuries Disablement Benefit, orat the basic (full day) rate with a War Disablement Pension

SSI 2023/302 reg 5(1) to (3) (legislation.gov.uk, fetched 2026-11-03):

> (1) Carer Support Payment may only be paid to an individual in respect of a period during which that individual provides regular and substantial care to a person to whom a qualifying disability benefit is normally payable (a “cared for person”).
> (2) For the purposes of paragraph (1), an individual shall only be treated as being regularly and substantially engaged in caring for a cared for person on every day in a week if they are, or are likely to be, regularly engaged for at least 35 hours in an award week in caring for that cared for person.
> (3) No individual can be entitled to Carer Support Payment in respect of a cared for person where another individual is entitled to—
> (a) Carer Support Payment,
> (b) Carer’s Allowance, or
> (c) the carer element of Universal Credit,
> in respect of that cared for person.

## Required outputs

For SSCBA 1992 s.70 with SI 1976/409 regs 3(1) and 4:

- `is_severely_disabled_person` (bool, the person cared for): one of the s.70(2) benefits is payable in respect of them, or a reg 3(1) payment whose weekly rate is "not less than the amount specified in paragraph 2(a) of Part V of Schedule 4 to the Contributions and Benefits Act". The supplied texts don't give that amount, so the floor stays pending until the follow-up ingests it.
- `regularly_and_substantially_engaged_in_caring` (bool, the carer, per week): as at that week the carer is, or is likely to be, engaged and regularly engaged for at least 35 hours a week caring for that severely disabled person (reg 4(1)); for a carer of two or more severely disabled persons, also at least 35 hours actually spent in that week caring for any one of them, without counting care for the others (reg 4(1A), which has no "is likely to be"). A parameter holds the 35 hours.
- `carers_allowance_entitled` (bool, the carer, per day): s.70(1), with (a) from the output above and (b) and (c) as inputs. The follow-up can keep section 70(3), (4), (7) and (7ZA) as inputs too; the output is false for a day on which the carer fails any of them.

For SSI 2023/302 regs 2(2) and 5:

- `qualifying_disability_benefit_normally_payable` (bool, the person cared for): one of the reg 2(2) benefits is normally payable to them, so they are a "cared for person" (reg 5(1)).
- `meets_minimum_weekly_care_hours` (bool, the individual, per award week): the individual is, or is likely to be, regularly engaged for at least `carer_support_payment_minimum_weekly_care_hours` (35) hours in the award week caring for that cared for person (reg 5(2)); the follow-up reuses the existing parameter. Under reg 5(2) the minimum is necessary for regular and substantial care but not sufficient, so the follow-up keeps regular and substantial care as an input.
- `carer_support_payment_care_condition_met` (bool, the individual, per award week): reg 5(1), where the person cared for is a cared for person, the individual provides regular and substantial care (input) and meets the minimum hours; the follow-up can keep reg 5(3) as an input.

## Companion cases

We worked out each expected value by hand from the law text above, not from policyengine-uk. In each case the carer cares for one person, so reg 4(1A) doesn't apply. In cases 1 and 2 the carer meets every Carer's Allowance condition the case doesn't name: aged 16 or over and not receiving full-time education (s.70(3)), the residence or presence conditions (s.70(4)), no other allowance and no Carer Support Payment for the same day (s.70(7)), no one else with a relevant entitlement for the same person (s.70(7ZA)), not gainfully employed (s.70(1)(b)) and the prescribed description (s.70(1)(c)). In cases 3 and 4 the carer meets every Carer Support Payment condition the case doesn't name: no other individual entitled to Carer Support Payment, Carer's Allowance or the Universal Credit carer element for the same cared for person (reg 5(3)), the regulations' other conditions, and, as s.70(7)(b) requires of anyone with Carer Support Payment, no Carer's Allowance for the same days.

1. **England: care of a person with the PIP daily living component.** A carer aged 45 is, and is likely to be, engaged and regularly engaged for 40 hours a week (the week of 2026-11-02 to 2026-11-08) in caring for a person in respect of whom personal independence payment is payable by virtue of entitlement to the daily living component at the standard rate.
   - Section 70(2) covers "personal independence payment by virtue of entitlement to the daily living component at the standard or enhanced rate", so `is_severely_disabled_person` = true.
   - 40 hours meet reg 4(1)'s "at least 35 hours a week in caring for that severely disabled person", so `regularly_and_substantially_engaged_in_caring` = true.
   - Under reg 4(1) the carer counts as engaged, and as regularly and substantially engaged, in caring for that severely disabled person on every day of that week. The carer meets (b) and (c), and no other condition fails, so `carers_allowance_entitled` = true for each of the seven days (s.70(1): "for any day on which he is engaged in caring for a severely disabled person").
2. **England: care of a person with no listed benefit.** The same carer cares 40 hours a week for a person with none of the s.70(2) benefits and no reg 3(1) payment.
   - No s.70(2) benefit or reg 3(1) payment is payable in respect of them, so `is_severely_disabled_person` = false.
   - Under reg 4(1) a person counts as regularly and substantially engaged only for care of "that severely disabled person", and here there is none, so `regularly_and_substantially_engaged_in_caring` = false whatever the hours.
   - The carer is not "engaged in caring for a severely disabled person" (s.70(1)), so `carers_allowance_entitled` = false.
3. **Scotland: care of a person with the ADP daily living component.** A carer in Scotland provides regular and substantial care to a person to whom the daily living component of Adult Disability Payment is normally payable at the standard rate, and is, and is likely to be, regularly engaged for 35 hours in each award week (the award week of 2026-11-02 to 2026-11-08) in caring for that person.
   - Reg 2(2) lists "the daily living component of Adult Disability Payment at the standard or enhanced rate", so `qualifying_disability_benefit_normally_payable` = true and the person is a "cared for person" (reg 5(1)).
   - 35 hours meet reg 5(2)'s "at least 35 hours in an award week", so `meets_minimum_weekly_care_hours` = true.
   - The individual provides regular and substantial care to a cared for person (reg 5(1)) and meets the minimum, so `carer_support_payment_care_condition_met` = true; with every other condition met, the carer gets Carer Support Payment.
4. **Scotland boundary.** As case 3, except that the carer is, and is likely to be, regularly engaged for only 34 hours in each award week: they don't reach reg 5(2)'s "at least 35 hours", so `meets_minimum_weekly_care_hours` = false and `carer_support_payment_care_condition_met` = false.

### review_finding (paste as-is)

```yaml
review_finding:
  source:
    repository: PolicyEngine/policyengine-uk
    issue: 2310
    pull_request: 2860
  rulespec_uk_commit: 0497350d7
  provisions:
    - citation: Social Security Contributions and Benefits Act 1992 s.70(1) and (2)
      status: not encoded
    - citation: The Social Security (Invalid Care Allowance) Regulations 1976 regs 3(1) and 4(1) and (1A)
      status: not checked
    - citation: The Carer's Assistance (Carer Support Payment) (Scotland) Regulations 2023 reg 5(2)
      module: uk/regulations/ssi/2023/302/5.yaml
      status: partly encoded (carer_support_payment_minimum_weekly_care_hours, 35, only)
    - citation: The Carer's Assistance (Carer Support Payment) (Scotland) Regulations 2023 reg 5(1)
      module: uk/regulations/ssi/2023/302/5.yaml
      status: not encoded
    - citation: The Carer's Assistance (Carer Support Payment) (Scotland) Regulations 2023 reg 2(2), "qualifying disability benefit"
      status: not checked
  finding: >-
    uk/regulations/ssi/2023/302/5.yaml encodes the 35-hour minimum of SSI
    2023/302 reg 5(2) but not the reg 5(1) condition that the care is for a
    person to whom a qualifying disability benefit is normally payable.
    rulespec-uk encodes nothing of SSCBA 1992 s.70, under which DWP pays
    Carer's Allowance only to a person caring for a severely disabled person:
    someone in respect of whom one of the s.70(2) benefits, or an SI 1976/409
    reg 3(1) payment at or above its weekly floor, is payable.
  policyengine_uk: >-
    With pull request 2860 (not yet merged), policyengine-uk pays Carer's
    Allowance and Carer Support Payment on caring hours only where the input
    cares_for_severely_disabled_person holds. The input defaults to true
    because survey caring hours do not say whom the carer cares for; a
    reported award counts whatever the input says.
  companion_cases: 4
```

## Completion boundary

An approved follow-up must:

- **ingest** SSCBA 1992 s.70 as now in force (at least subsections (1) to (4), (7) and (7ZA)), SSCBA 1992 Schedule 4 Part V paragraph 2(a) (the amount behind reg 3(1)'s floor), SI 1976/409 regs 3 and 4, and SSI 2023/302 regs 2(2) and 5, where the corpus lacks them;
- **encode** the outputs above: the s.70(2) definition with reg 3(1)'s prescribed payments and their floor, the reg 4(1) and (1A) hours test for care of that severely disabled person, the s.70(1) entitlement condition with s.70(1)(b) and (c), (3), (4), (7) and (7ZA) as inputs, the reg 2(2) list of qualifying disability benefits, and reg 5(1)'s cared for person condition joined to the existing reg 5(2) parameter, with regular and substantial care and reg 5(3) as inputs;
- **prove** each output with proof atoms (as in the existing module's `metadata.proof.atoms`) whose excerpts quote the corpus text as ingested, and pass the four companion cases, including case 2 (no listed benefit, so no entitlement whatever the hours) and case 4 (34 hours).

Generated by Claude Code

@github-actions

github-actions Bot commented Nov 3, 2026

Copy link
Copy Markdown
Contributor

Aggregate impact on certified data: pass

Base 1d4d020aa1 against head d3986e5bb7, both on enhanced_frs_2024_25.h5 (policyengine-uk-data 1.58.1, sha256 056e80fd8e91), fiscal years 2025-26 to 2031-32. Each year is a full microsimulation run on each side.

Checks: 0 broken by this change, 1 failing on both sides, 0 fixed. Moves flagged for review: 0 (thresholds in report_spec.yaml; a flag does not fail the job).

Workflow run and full report

Notes

  • In the years a figure from fewer than 10 records is suppressed (spending.disabled_students_allowance), every total containing it, and the decile incomes, are rebuilt from their other components, so no published total includes it. Those totals are marked †. A change is withheld where the two sides leave out different figures and can't be lined up.

Moves flagged for review

None.

Spending by benefit and service

Measure 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Disabled Students' Allowance suppressed suppressed suppressed suppressed suppressed suppressed suppressed

Caseloads

Measure 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Disabled Students' Allowance suppressed suppressed suppressed suppressed suppressed suppressed suppressed

Standard reform costings (change in gov_balance)

Measure 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Raise Class 1 main employee NICs rate to 10% 0 0 0 0 0 suppressed suppressed
Raise additional rate by 3pp 0 0 0 0 0 suppressed suppressed

The report suppresses a reform's costing and target change in these years, for the reasons below (privacy.py):

  • Raise Class 1 main employee NICs rate to 10%, 2030-31 to 2031-32 (base and head): the reform changes income_tax in fewer than 10 records.
  • Raise additional rate by 3pp, 2030-31 to 2031-32 (base and head): the reform changes universal_credit in fewer than 10 records.

Standard reforms: change in each reform's target

Measure 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Raise Class 1 main employee NICs rate to 10%: change in national_insurance 0 0 0 0 0 suppressed suppressed
Raise additional rate by 3pp: change in income_tax 0 0 0 0 0 suppressed suppressed

Household net income by decile

No household's net income changes in any year.

No change in any year: receipts by tax head; government balance, each component counted once; model totals; household income totals; population; poverty rates; people in poverty; inequality; mean household net income in each side's own deciles.

Checks failing on both base and head (1)
  • VAT excluding private school fees is never negative (sign:vat): 2025-26: 76 units below zero, a weighted £-53,888,684 in total; 2026-27: 76 units below zero, a weighted £-55,777,260 in total; 2027-28: 76 units below zero, a weighted £-57,727,917 in total
Counted-once check

Each of 92 components was raised by £1 per unit in 2026-27, and every head of its totals was read household by household: its own head must rise by exactly £1, no other tax head may move, no other benefit may rise, and the model's own total must move by what its heads moved. A head that breaks a rule is measured again twice: with every other head held at its baseline value, and with every other head held at its value after the first £1 while the component rises again. It fails where either still shows the response. 0 failed; 0 were skipped.

  • widowed_parents_allowance: pension_credit responds only through other heads in fewer than 10 households (other heads that moved there: carers_allowance; gov_spending; not a failure)
  • widowed_parents_allowance: pension_credit responds only through other heads in fewer than 10 households (other heads that moved there: carers_allowance; household_benefits; not a failure)
Provenance
Side Commit Runtime Environment hash Partition hash Time
base main 1d4d020aa1 uk 2.172.1 (files 27900fb6fb5f), core 3.34.1, py 3.13.18 aarch64 f421d4d66ebc 7cb61324a46b 2094.49s
head #2860 merged into main d3986e5bb7 uk 2.172.1 (files a0434763715d), core 3.34.1, py 3.13.18 aarch64 f421d4d66ebc 7cb61324a46b 2067.91s

Dataset: hf://policyengine/policyengine-uk-data-private/enhanced_frs_2024_25.h5@2526edbbb687a3b54dbb11272e5389e4b62d2ac2, sha256 056e80fd8e9151d78f432a25cde863340baee81304c6216a37fb575ce8563784 (verified on both sides), policyengine-uk-data 1.58.1.

Receipts by tax head: head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Final charge on cash interest in non-cash ISAs £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Lifetime ISA withdrawal charge £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Income tax £294.46bn £315.23bn £335.82bn £351.28bn £366.96bn £385.36bn £400.00bn
National Insurance (employee and self-employed) £51.70bn £54.14bn £56.13bn £57.73bn £59.76bn £61.64bn £63.51bn
National Insurance (employer) £148.71bn £155.37bn £160.88bn £165.09bn £172.06bn £177.36bn £182.57bn
Employer NI change borne by capital £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Employer NI change borne by consumers £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Capital gains tax £12.60bn £13.15bn £13.60bn £14.11bn £14.67bn £15.24bn £15.80bn
Student loan repayments £7.82bn £8.13bn £8.39bn £8.58bn £8.79bn £9.04bn £9.29bn
VAT excluding private school fees £249.37bn £256.87bn £266.33bn £272.70bn £278.97bn £285.24bn £291.59bn
Change in VAT from its baseline £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
VAT on private school fees £1.95bn £2.01bn £2.09bn £2.14bn £2.20bn £2.26bn £2.31bn
Change in private school VAT from its baseline £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Fuel duties £24.71bn £24.13bn £26.00bn £26.83bn £26.51bn £25.78bn £24.63bn
Alcohol duties £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Tobacco duties £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Vehicle excise duties £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Betting and gaming duties £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
TV licence fee £4.26bn £4.40bn £4.41bn £4.42bn £4.43bn £4.44bn £4.45bn
Council tax £49.21bn £52.16bn £54.89bn £57.95bn £61.16bn £64.47bn £67.91bn
High value council tax surcharge £0.00bn £0.00bn £0.00bn £0.48bn £0.49bn £0.50bn £0.51bn
Northern Ireland domestic rates £0.55bn £0.58bn £0.60bn £0.63bn £0.66bn £0.69bn £0.72bn
Business rates £34.68bn £36.20bn £38.00bn £39.46bn £42.27bn £43.25bn £44.29bn
Stamp duty land tax on the household's own purchases £6.88bn £7.32bn £7.66bn £8.06bn £8.47bn £8.91bn £9.35bn
Stamp duty land tax paid by companies £4.72bn £4.57bn £5.29bn £6.03bn £6.37bn £6.92bn £7.45bn
Land transaction tax (Wales) £0.07bn £0.08bn £0.08bn £0.09bn £0.10bn £0.10bn £0.11bn
Land and buildings transaction tax (Scotland) £0.31bn £0.32bn £0.33bn £0.35bn £0.36bn £0.38bn £0.40bn
Unspecified tax change borne by capital £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Unspecified tax change borne by consumers £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Wealth tax £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Wealth tax excluding the main residence £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Land value tax £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Carbon tax £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Spending by benefit and service: head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Lifetime ISA bonus £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
State Pension £121.68bn £125.92bn £126.72bn £129.49bn £132.99bn £136.66bn £140.42bn
Pension Credit £6.66bn £7.03bn £7.29bn £7.48bn £7.60bn £7.84bn £8.03bn
Winter Fuel Payment £1.86bn £1.85bn £1.79bn £1.77bn £1.78bn £1.78bn £1.78bn
Pension Age Winter Heating Payment (Scotland) £0.19bn £0.20bn £0.20bn £0.21bn £0.21bn £0.22bn £0.22bn
Universal Credit £75.48bn £80.52bn £82.95bn £84.96bn £86.11bn £87.61bn £88.21bn
Housing Benefit £8.56bn £8.89bn £9.23bn £9.46bn £9.69bn £9.99bn £10.27bn
Council Tax Reduction £2.07bn £2.20bn £2.31bn £2.45bn £2.58bn £2.72bn £2.86bn
Employment and Support Allowance (income-related) £0.79bn £0.82bn £0.84bn £0.86bn £0.88bn £0.90bn £0.92bn
Employment and Support Allowance (contribution-based) £5.20bn £5.37bn £5.56bn £5.69bn £5.82bn £5.95bn £6.09bn
Jobseeker's Allowance (income-based) £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Jobseeker's Allowance (contribution-based) £0.29bn £0.30bn £0.31bn £0.31bn £0.32bn £0.33bn £0.34bn
Income Support £0.11bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Working Tax Credit £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Child Tax Credit £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Incapacity Benefit £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Personal Independence Payment £26.95bn £28.03bn £29.05bn £30.09bn £30.75bn £31.51bn £32.21bn
Disability Living Allowance £7.49bn £7.79bn £8.07bn £8.36bn £8.55bn £8.76bn £8.95bn
Attendance Allowance £8.68bn £9.03bn £9.36bn £9.69bn £9.90bn £10.15bn £10.38bn
Carer's Allowance £4.48bn £4.66bn £4.83bn £5.00bn £5.11bn £5.27bn £5.42bn
Carer Support Payment (Scotland) £0.31bn £0.32bn £0.33bn £0.34bn £0.35bn £0.36bn £0.37bn
Carer's Allowance Supplement (Scotland) £0.00bn £0.04bn £0.04bn £0.05bn £0.05bn £0.05bn £0.05bn
Severe Disablement Allowance £0.03bn £0.03bn £0.03bn £0.03bn £0.03bn £0.03bn £0.03bn
Industrial Injuries Disablement Benefit £0.50bn £0.52bn £0.54bn £0.55bn £0.56bn £0.58bn £0.59bn
Armed Forces Compensation Scheme £0.61bn £0.63bn £0.65bn £0.66bn £0.68bn £0.69bn £0.71bn
War Widow's or Widower's Pension £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Child Benefit £16.19bn £16.82bn £17.39bn £18.00bn £18.39bn £18.84bn £19.25bn
Scottish Child Payment £0.49bn £0.52bn £0.53bn £0.55bn £0.56bn £0.57bn £0.56bn
Two Child Limit Payment (Scotland, counterfactual) £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Healthy Start vouchers £0.05bn £0.05bn £0.05bn £0.05bn £0.05bn £0.05bn £0.05bn
Maternity Allowance £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Statutory Maternity Pay £3.30bn £3.41bn £3.54bn £3.62bn £3.70bn £3.78bn £3.87bn
Statutory Paternity Pay £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Statutory Sick Pay £1.12bn £1.16bn £1.20bn £1.23bn £1.26bn £1.29bn £1.32bn
Sure Start Maternity Grant £0.01bn £0.01bn £0.01bn £0.01bn £0.01bn £0.01bn £0.01bn
Bereavement Support Payment £0.67bn £0.69bn £0.71bn £0.73bn £0.75bn £0.76bn £0.78bn
Widowed Parent's Allowance £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Tax-Free Childcare £0.56bn £0.57bn £0.57bn £0.58bn £0.60bn £0.61bn £0.59bn
Extended childcare entitlement £2.99bn £3.50bn £3.59bn £3.71bn £3.78bn £3.86bn £3.93bn
Universal childcare entitlement £2.06bn £2.22bn £2.29bn £2.37bn £2.43bn £2.48bn £2.53bn
Targeted childcare entitlement £0.50bn £0.51bn £0.52bn £0.54bn £0.55bn £0.57bn £0.56bn
Childcare Offer for Wales £0.26bn £0.28bn £0.28bn £0.29bn £0.30bn £0.31bn £0.32bn
Care to Learn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Childcare Grant £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Parents' Learning Allowance £0.20bn £0.20bn £0.20bn £0.20bn £0.20bn £0.20bn £0.20bn
Adult Dependants' Grant £0.06bn £0.06bn £0.04bn £0.04bn £0.04bn £0.04bn £0.04bn
Travel Grant £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Disabled Students' Allowance suppressed suppressed suppressed suppressed suppressed suppressed suppressed
16 to 19 Bursary Fund £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
NHS spending £203.89bn £204.30bn £204.56bn £204.91bn £205.34bn £205.85bn £206.35bn
State education spending £0.02bn £0.02bn £0.02bn £0.02bn £0.02bn £0.02bn £0.02bn
Transport subsidy spending £25.05bn £25.10bn £25.14bn £25.18bn £25.23bn £25.30bn £25.36bn
Cost-of-living support payment £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Energy Bills Rebate £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Household Energy Payment £0.00bn £2.11bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Energy Price Guarantee subsidy £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Basic income £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Disability basic income £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Other public spending budget change £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Caseloads: head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Lifetime ISA bonus 0k 0k 0k 0k 0k 0k 0k
State Pension 11,264k 11,145k 10,819k 10,700k 10,723k 10,750k 10,776k
Pension Credit 1,486k 1,480k 1,472k 1,452k 1,450k 1,455k 1,464k
Winter Fuel Payment 7,844k 7,783k 7,473k 7,375k 7,391k 7,409k 7,427k
Pension Age Winter Heating Payment (Scotland) 803k 802k 800k 797k 799k 801k 802k
Universal Credit 6,342k 6,347k 6,336k 6,297k 6,292k 6,271k 6,223k
Housing Benefit 1,249k 1,245k 1,244k 1,227k 1,227k 1,229k 1,232k
Council Tax Reduction 3,176k 3,195k 3,200k 3,214k 3,224k 3,235k 3,242k
Employment and Support Allowance (income-related) 71k 71k 71k 71k 71k 71k 71k
Employment and Support Allowance (contribution-based) 719k 720k 721k 722k 724k 726k 728k
Jobseeker's Allowance (income-based) 0k 0k 0k 0k 0k 0k 0k
Jobseeker's Allowance (contribution-based) 67k 67k 67k 67k 67k 68k 68k
Income Support 25k 0k 0k 0k 0k 0k 0k
Working Tax Credit 0k 0k 0k 0k 0k 0k 0k
Child Tax Credit 0k 0k 0k 0k 0k 0k 0k
Incapacity Benefit 0k 0k 0k 0k 0k 0k 0k
Personal Independence Payment 3,567k 3,575k 3,579k 3,585k 3,593k 3,602k 3,611k
Disability Living Allowance 1,291k 1,294k 1,296k 1,298k 1,300k 1,304k 1,307k
Attendance Allowance 1,695k 1,698k 1,700k 1,703k 1,707k 1,711k 1,715k
Carer's Allowance 1,034k 1,037k 1,038k 1,040k 1,042k 1,060k 1,062k
Carer Support Payment (Scotland) 71k 71k 71k 72k 72k 72k 72k
Carer's Allowance Supplement (Scotland) 0k 71k 71k 72k 72k 72k 72k
Severe Disablement Allowance 4k 4k 4k 4k 4k 4k 4k
Industrial Injuries Disablement Benefit 137k 137k 137k 138k 138k 138k 139k
Armed Forces Compensation Scheme 93k 93k 94k 94k 94k 94k 94k
War Widow's or Widower's Pension 0k 0k 0k 0k 0k 0k 0k
Child Benefit 8,123k 8,120k 8,120k 8,130k 8,145k 8,161k 8,178k
Scottish Child Payment 351k 352k 352k 353k 350k 348k 337k
Two Child Limit Payment (Scotland, counterfactual) 0k 0k 0k 0k 0k 0k 0k
Healthy Start vouchers 200k 200k 200k 201k 201k 201k 202k
Maternity Allowance 0k 0k 0k 0k 0k 0k 0k
Statutory Maternity Pay 333k 333k 334k 334k 335k 336k 337k
Statutory Paternity Pay 0k 0k 0k 0k 0k 0k 0k
Statutory Sick Pay 181k 182k 182k 182k 182k 183k 183k
Sure Start Maternity Grant 26k 26k 26k 26k 26k 26k 26k
Bereavement Support Payment 98k 98k 98k 98k 98k 99k 99k
Widowed Parent's Allowance 0k 0k 0k 0k 0k 0k 0k
Tax-Free Childcare 1,043k 1,027k 1,014k 1,009k 1,011k 1,009k 993k
Extended childcare entitlement 795k 800k 796k 797k 798k 798k 792k
Universal childcare entitlement 1,071k 1,072k 1,072k 1,073k 1,076k 1,079k 1,074k
Targeted childcare entitlement 165k 156k 154k 154k 155k 155k 150k
Childcare Offer for Wales 39k 39k 39k 39k 39k 39k 39k
Care to Learn 0k 0k 0k 0k 0k 0k 0k
Childcare Grant 0k 0k 0k 0k 0k 0k 0k
Parents' Learning Allowance 98k 98k 98k 99k 99k 99k 99k
Adult Dependants' Grant 18k 18k 12k 12k 12k 12k 12k
Travel Grant 0k 0k 0k 0k 0k 0k 0k
Disabled Students' Allowance suppressed suppressed suppressed suppressed suppressed suppressed suppressed
16 to 19 Bursary Fund 0k 0k 0k 0k 0k 0k 0k
Cost-of-living support payment 0k 0k 0k 0k 0k 0k 0k
Energy Bills Rebate 0k 0k 0k 0k 0k 0k 0k
Household Energy Payment 0k 21,065k 0k 0k 0k 0k 0k
Energy Price Guarantee subsidy 0k 0k 0k 0k 0k 0k 0k
Basic income 0k 0k 0k 0k 0k 0k 0k
Disability basic income 0k 0k 0k 0k 0k 0k 0k
Government balance, each component counted once: head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Government receipts, each component once £892.00bn £934.66bn £980.50bn £1,015.93bn £1,054.24bn £1,091.56bn £1,124.89bn
Government spending £529.38bn † £545.66bn † £550.77bn † £559.51bn † £567.20bn † £575.95bn † £583.60bn †
Government balance, each receipt once £362.62bn † £389.00bn † £429.74bn † £456.42bn † £487.04bn † £515.61bn † £541.29bn †
Benefits in household_benefits but not in gov_spending £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Model totals: head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
gov_tax £892.00bn £934.66bn £980.50bn £1,015.93bn £1,054.24bn £1,091.56bn £1,124.89bn
household_tax £491.97bn £520.41bn £551.21bn £576.01bn £601.00bn £626.70bn £648.42bn
pre_budget_change_household_tax £484.15bn £512.28bn £542.82bn £566.95bn £591.72bn £617.16bn £638.61bn
gov_spending £529.38bn † £545.66bn † £550.77bn † £559.51bn † £567.20bn † £575.95bn † £583.60bn †
household_benefits £529.38bn † £545.66bn † £550.77bn † £559.51bn † £567.20bn † £575.95bn † £583.60bn †
gov_balance £362.62bn † £389.00bn † £429.74bn † £456.42bn † £487.04bn † £515.61bn † £541.29bn †
Household income totals: head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Household market income £1,637.96bn £1,702.77bn £1,757.35bn £1,806.41bn £1,855.97bn £1,912.43bn £1,970.44bn
Household net income £1,636.69bn † £1,687.82bn † £1,715.45bn † £1,747.49bn † £1,778.69bn † £1,817.02bn † £1,859.69bn †
Household net income (HBAI definition) £1,449.57bn £1,499.83bn £1,530.86bn £1,565.17bn £1,597.89bn £1,635.60bn £1,676.61bn
Population: head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
People 69,245k 69,383k 69,473k 69,592k 69,738k 69,912k 70,080k
Benefit units 35,110k 35,181k 35,226k 35,286k 35,360k 35,449k 35,534k
Households 31,046k 31,108k 31,149k 31,201k 31,267k 31,345k 31,420k
Poverty rates: head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Absolute poverty, before housing costs: everyone 16.3% 15.5% 16.4% 16.3% 16.5% 16.5% 16.6%
Absolute poverty, before housing costs: children 24.7% 22.1% 23.3% 22.9% 23.1% 23.2% 23.5%
Absolute poverty, before housing costs: working-age adults 14.1% 13.8% 14.7% 14.7% 14.8% 14.8% 15.0%
Absolute poverty, before housing costs: pensioners 13.7% 13.4% 14.0% 13.8% 13.9% 13.9% 13.9%
Absolute poverty, after housing costs: everyone 21.6% 21.0% 22.0% 22.6% 22.9% 23.1% 23.4%
Absolute poverty, after housing costs: children 33.3% 31.3% 32.3% 32.5% 32.9% 33.4% 34.2%
Absolute poverty, after housing costs: working-age adults 19.9% 19.8% 20.8% 21.6% 21.9% 22.0% 22.3%
Absolute poverty, after housing costs: pensioners 12.7% 12.4% 13.2% 13.2% 13.3% 13.4% 13.6%
Relative poverty, before housing costs: everyone 17.0% 16.0% 16.4% 16.3% 16.4% 16.3% 16.6%
Relative poverty, before housing costs: children 25.9% 22.9% 23.3% 22.9% 23.0% 22.9% 23.5%
Relative poverty, before housing costs: working-age adults 14.5% 14.1% 14.6% 14.7% 14.7% 14.7% 15.0%
Relative poverty, before housing costs: pensioners 14.5% 14.0% 13.9% 13.8% 13.8% 13.9% 13.9%
Relative poverty, after housing costs: everyone 21.4% 21.0% 21.3% 21.3% 21.3% 21.5% 21.7%
Relative poverty, after housing costs: children 33.1% 31.1% 31.2% 31.0% 31.1% 31.2% 31.8%
Relative poverty, after housing costs: working-age adults 19.9% 19.8% 20.2% 20.4% 20.5% 20.6% 20.8%
Relative poverty, after housing costs: pensioners 12.5% 12.4% 12.2% 11.7% 11.7% 11.8% 12.0%
People in poverty: head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Absolute poverty, before housing costs: everyone 11,278k 10,779k 11,402k 11,365k 11,476k 11,513k 11,651k
Absolute poverty, before housing costs: children 3,688k 3,314k 3,496k 3,445k 3,480k 3,502k 3,549k
Absolute poverty, before housing costs: working-age adults 5,965k 5,893k 6,308k 6,362k 6,420k 6,430k 6,521k
Absolute poverty, before housing costs: pensioners 1,624k 1,572k 1,598k 1,558k 1,576k 1,580k 1,581k
Absolute poverty, after housing costs: everyone 14,944k 14,600k 15,310k 15,721k 15,937k 16,141k 16,426k
Absolute poverty, after housing costs: children 4,975k 4,682k 4,837k 4,888k 4,945k 5,040k 5,179k
Absolute poverty, after housing costs: working-age adults 8,463k 8,461k 8,971k 9,344k 9,491k 9,584k 9,706k
Absolute poverty, after housing costs: pensioners 1,506k 1,457k 1,502k 1,490k 1,501k 1,517k 1,542k
Relative poverty, before housing costs: everyone 11,750k 11,084k 11,388k 11,364k 11,416k 11,415k 11,651k
Relative poverty, before housing costs: children 3,872k 3,423k 3,496k 3,445k 3,466k 3,454k 3,549k
Relative poverty, before housing costs: working-age adults 6,159k 6,013k 6,301k 6,362k 6,389k 6,389k 6,521k
Relative poverty, before housing costs: pensioners 1,720k 1,648k 1,590k 1,557k 1,562k 1,572k 1,581k
Relative poverty, after housing costs: everyone 14,849k 14,552k 14,776k 14,809k 14,874k 15,014k 15,234k
Relative poverty, after housing costs: children 4,942k 4,660k 4,673k 4,663k 4,679k 4,707k 4,806k
Relative poverty, after housing costs: working-age adults 8,426k 8,440k 8,711k 8,823k 8,873k 8,967k 9,062k
Relative poverty, after housing costs: pensioners 1,482k 1,452k 1,392k 1,323k 1,322k 1,339k 1,365k
Inequality: head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Gini coefficient, equivalised HBAI income before housing costs 0.3080 0.3052 0.3058 0.3058 0.3063 0.3069 0.3085
Mean household net income in each side's own deciles: head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Decile 1: mean household_net_income per household £17,681 † £17,997 † £17,915 † £18,152 † £18,307 † £18,531 † £18,717 †
Decile 2: mean household_net_income per household £27,939 † £29,023 † £28,711 † £29,013 † £29,276 † £29,691 † £30,150 †
Decile 3: mean household_net_income per household £34,320 † £35,485 † £36,073 † £36,611 † £37,197 † £37,737 † £38,187 †
Decile 4: mean household_net_income per household £38,933 † £40,687 † £41,723 † £42,727 † £43,334 † £44,132 † £44,432 †
Decile 5: mean household_net_income per household £43,239 † £45,567 † £46,014 † £46,959 † £47,712 † £48,584 † £50,282 †
Decile 6: mean household_net_income per household £47,927 † £49,210 † £50,892 † £51,939 † £52,945 † £53,942 † £54,680 †
Decile 7: mean household_net_income per household £55,662 † £56,571 † £57,442 † £57,670 † £58,729 † £59,657 † £61,082 †
Decile 8: mean household_net_income per household £68,789 † £70,803 † £71,858 † £73,466 † £73,880 † £75,320 † £77,178 †
Decile 9: mean household_net_income per household £78,890 † £81,013 † £80,861 † £82,646 † £85,464 † £86,946 † £89,509 †
Decile 10: mean household_net_income per household £117,005 † £120,339 † £124,742 † £126,632 † £125,971 † £128,600 † £130,938 †
Standard reform costings (change in gov_balance): head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Raise basic rate by 1pp £6.41bn £6.66bn £6.63bn £6.85bn £7.03bn £7.25bn £7.49bn
Raise higher rate by 1pp £3.61bn £3.87bn £4.00bn £4.22bn £4.44bn £4.71bn £4.83bn
Raise personal allowance by ~800GBP/year £-3.80bn £-3.92bn £-3.98bn £-4.04bn £-4.10bn £-4.23bn £-1.95bn
Raise child benefit by 25GBP/week per additional child £-1.99bn £-1.75bn £-1.55bn £-1.38bn £-1.30bn £-1.18bn £-1.07bn
Reduce Universal Credit taper rate to 20% £-20.77bn £-21.32bn £-21.75bn £-21.99bn £-22.34bn £-22.75bn £-22.94bn
Raise Class 1 main employee NICs rate to 10% £10.89bn £11.30bn £11.71bn £12.01bn £12.31bn suppressed suppressed
Raise VAT standard rate by 2pp £24.89bn £25.71bn £26.63bn £27.24bn £27.87bn £28.50bn £29.14bn
Raise additional rate by 3pp £2.90bn £3.15bn £3.22bn £3.41bn £3.61bn suppressed suppressed
Raise the Universal Credit standard allowance by 10% £-3.06bn £-3.18bn £-3.26bn £-3.35bn £-3.44bn £-3.49bn £-3.50bn
Raise the State Pension by 10% £-7.78bn £-8.01bn £-8.24bn £-8.47bn £-8.82bn £-8.55bn £-8.89bn
Standard reforms: change in each reform's target: head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Raise basic rate by 1pp: change in income_tax £6.55bn £6.86bn £6.79bn £7.00bn £7.20bn £7.44bn £7.66bn
Raise higher rate by 1pp: change in income_tax £3.61bn £3.92bn £4.01bn £4.23bn £4.45bn £4.72bn £4.84bn
Raise personal allowance by ~800GBP/year: change in income_tax £-3.93bn £-4.07bn £-4.13bn £-4.18bn £-4.22bn £-4.40bn £-1.75bn
Raise child benefit by 25GBP/week per additional child: change in child_benefit £2.33bn £2.14bn £1.94bn £1.76bn £1.65bn £1.52bn £1.40bn
Reduce Universal Credit taper rate to 20%: change in universal_credit £20.74bn £21.31bn £21.78bn £22.04bn £22.37bn £22.78bn £22.99bn
Raise Class 1 main employee NICs rate to 10%: change in national_insurance £11.15bn £11.63bn £12.00bn £12.29bn £12.61bn suppressed suppressed
Raise VAT standard rate by 2pp: change in vat £24.69bn £25.51bn £26.42bn £27.03bn £27.65bn £28.28bn £28.91bn
Raise additional rate by 3pp: change in income_tax £2.90bn £3.15bn £3.22bn £3.42bn £3.62bn suppressed suppressed
Raise the Universal Credit standard allowance by 10%: change in universal_credit £3.06bn £3.19bn £3.28bn £3.37bn £3.43bn £3.49bn £3.51bn
Raise the State Pension by 10%: change in state_pension £10.68bn £11.17bn £11.28bn £11.60bn £12.03bn £12.47bn £12.97bn

@MaxGhenis

Copy link
Copy Markdown
Collaborator Author

Ready for hub review

Head: 1e1d87e4fd3d9394f0299716b924e5d92179811e on claude/carer-benefits-severely-disabled-7ga0a7 (the session pins pushes to this branch). I branched from main at 52b30809ff5681ebfede4d559e72a44f4c893cd2, which hadn't moved when I started. main has since moved to 9b456bda65f6f01daddd89b02a77954f6a9114ad (41 commits, none touching carer code or a file this PR changes). I didn't merge it; git merge-tree is clean.

Commits: 538c4d61 (the input, the four gates, docs, YAML, properties, changelog), cdf713a0 (review fixes and the reported-limb YAML case), b3907589 (invariant 6 and the scope of the others), b60b686e (comment rewrap), 1e1d87e4 (invariant 5 also checks is_carer_for_benefits). Before the PR existed I amended the first commit's message so that it ends with the Co-Authored-By line, and force-pushed with lease; nothing else rewrote pushed history. I also amended b3907589 once, before its first push.

What changed

  • policyengine_uk/variables/gov/dwp/cares_for_severely_disabled_person.py (new): Person, YEAR, bool, default_value = True, label "Cares for a severely disabled person". Its documentation says what it records, why it defaults to true and what it gates, and cites s.70 (GB and NI Acts), SI 1976/409 reg 3, SSI 2023/302 regs 2 and 5, and UC Regs regs 29 and 30.
  • The hours route now needs the input in four places:
    • policyengine_uk/utils/carers_allowance_taper.py:48-53: the meets_work_condition line and its comment only, with no import. It merges cleanly with Count Carer's Allowance earnings-limit pence exactly #2543.
    • carer_support_payment_pre_couple_limit.py:33-38, plus a reg 5 reference at :19.
    • is_carer_for_benefits.py:42-44.
    • partners_care_for_same_severely_disabled_person.py:73-79 (explained_by_hours).
  • The reported-award routes stay as they were.
  • Documentation:
    • is_carer_for_benefits (its "hours alone" sentences now describe the input, and it cites s.70);
    • partners_care_for_same_severely_disabled_person.py:22-24, 31-33, 37-38, 55-61;
    • uc_unable_to_provide_childcare.py:24-29 and meets_uc_minimum_age_condition.py:25-27, which said the hours limb doesn't check the person cared for;
    • docs/book/programs/gov/dwp/disability-legacy-benefits.md:97-98;
    • two test comments: carer_premium.yaml:22-25 and uc_childcare_work_condition_reg_32.yaml:131-132.
  • I read the documentation of carers_allowance_pre_couple_limit, carer_support_payment_pre_couple_limit, is_severely_disabled_for_carers_allowance, the parameter gov.dwp.carers_allowance.qualifying_disability_benefits and is_cared_for_by_carer_benefit_recipient.py. My change makes none of their sentences wrong, so I left them, and left carer_premium.py (Count UC carer awards for severe disability and Scottish CTR premiums #2827's file) too. The parameter keeps its list (Include the Scottish devolved disability benefits in the LHA size-criteria benefit lists #2041).
  • changelog.d/2310.fixed.md: one sentence.

Findings and how I resolved them

I ran an independent review: four reviewers (formulas, YAML arithmetic, documentation, properties), then one adversarial verifier per finding, 23 agents in all. The formula reviewer found no defect in the four gates. The verifiers confirmed 10 findings, seven once duplicates merge; I fixed all of them.

  1. No YAML case tested the reported limb of is_carer_for_benefits with the input false; a mutant gating it passed everything. I added "A reported award above the earnings limit keeps the carer element whatever the input says" (carers_allowance_cared_for_person.yaml:255), and invariant 5 now checks is_carer_for_benefits (test_cares_for_severely_disabled_person_properties.py:395).
  2. Two places said reg 30 "gives" the carer element, and one spliced quote read "who "satisfy"": the YAML header and the UC case. I fixed both: DWP includes the element (reg 29), reg 30(1)(a) defines the caring responsibilities, and reg 30(2) makes a claim unnecessary (yaml:12-17, 152-156). The same fix went into the property docstring (:1-12).
  3. docs/book/programs/gov/dwp/disability-legacy-benefits.md:96-97 said the care-hours interface doesn't check the qualifying benefit. It now says it reads it only from the input. One verifier refuted this; the docs verifier confirmed it. I kept the fix for consistency with the two docstrings.
  4. The comment at uc_childcare_work_condition_reg_32.yaml:131 said the model reads "only" care hours; it now names the input.
  5. carer_premium.yaml:22-25 listed only two reasons hours fail to explain an entitlement; it now adds the input.
  6. The new variable's documentation named only DWP. It now says the model applies the same condition in Northern Ireland, says "the department", and adds the NI Act s.70 reference.
  7. The property docstring said a supplied value "fills every person" and that every test builds each unit twice; I corrected both (:72-79).

Refuted findings I acted on anyway:

  • Couple case (yaml:294): I dropped its partners_care_for_same_severely_disabled_person: true assertion. The verifier said true is the documented default, but it reads as contradicting the case's premise, and with one entitled partner it changes nothing.
  • Provisions written as actors: I named DWP, Social Security Scotland or the model instead, per the brief's writing rules, which the verifier didn't have.
  • Wording in the new variable's documentation and in is_carer_for_benefits ("Set it to false in a household calculation ...").
  • Earnings level: I raised the tapered earner from 12,500 to 13,500. In 2031 that is £21.70 a week over the projected limit instead of £6, so the taper test survives a change to the national living wage forecast.
  • The flag assertions in invariants 1–3 can't see a revert of explained_by_hours: without a supplied entitlement the flag doesn't depend on the input. The verifier refuted this, because those assertions still catch inverted or off-by-one gates. I kept them and added invariant 6, couples with an entitlement supplied for every person, checked against an oracle built from the inputs (:432). It catches the revert.

Findings of my own:

  • The brief's per-person "setting the input false never raises" doesn't hold across partners. Only one of two partners who care for the same person can have the award (s.70(7ZA)), so when one partner's input goes false the award moves to the other, who rises from £0 to £4,495.40. Where the elder's overlapping benefit had taken their award to nil, the couple go from £0 to £4,495.40. Under the taper (2031), setting both inputs false gives back a reported award: £3,987.02 returns once the younger's £5,115.42 on hours goes.
    • I ran each of these; each follows the law, and none is a bug.
    • Invariant 2 therefore compares only the person whose input changes, plus the benefit unit. Invariant 3 (everyone's input false) holds before the taper.
    • Two fixed tests run the cases (:469, :495).
  • A supplied entitlement whose hours the input no longer explains counts as a second award. That is the brief's intent. It can give a couple a second carer premium (£5,007.60 against £2,503.80) or UC carer element. So invariants 1–5 cover households with no supplied carer amounts or entitlements, and invariant 6 covers supplied entitlements.

Tests run

  • New YAML: carers_allowance_cared_for_person.yaml, 14 cases, all pass. I worked each value by hand from the parameter files, with the arithmetic in the comment.
  • New properties: test_cares_for_severely_disabled_person_properties.py, 8 tests, all pass in about 2 minutes. Each example batches up to 18 benefit units into one simulation.
  • Every test file that names the five variables (git grep -l, 101 test files):
    • 56 YAML files: 978 cases pass on 538c4d61, the first commit, with the same model code as the head; the three YAML files I edited later pass again on the head (68 cases).
    • 45 Python files, each with -n 4 and a 40-minute cap: all pass, with no skips. The sweep's 2-hour background limit stopped the last file, test_uc_work_related_groups_properties.py; it passes on rerun (14).
  • policyengine_uk/tests/code_health: 3,092 pass.
  • Lint: uvx ruff@0.17.2 format --check ., ruff check . and ruff check --select F811,F821 policyengine_uk are clean, and so is git diff --check. The style grep finds only quoted law.
  • PR checkers, run locally: .github/check_fix_pr.py passes on the final body, and .github/check_changelog_fragments.py passes.

Revert check

I ran these tests in a scratch worktree of main (52b30809) with only the input variable added.

  • YAML: 6 of 14 fail, every input-false case except the reported-award ones. The other 8 are the default cases and three reported-award guards, which pass by design.
  • Properties: 4 of 8 fail: invariant 4 (no award without a reported one), invariant 6 (supplied entitlement oracle) and both limit tests. Invariants 1, 2, 3 and 5 pass on main, where the input does nothing; the mutation checks below show they have teeth.

Mutation checks

Each mutation ran on a scratch copy of the head, against the new YAML (case by case) and the new properties. All seven fail at least one test.

Mutation YAML cases that fail Property tests that fail
The input defaults to false 6 1, 6 and both limit tests
The input also gates the reported CA route 1 5 and the taper limit test
explained_by_hours ignores the input (main's line) 1 6
CSP ignores the input (main's line) 1 2, 3 and 4
is_carer_for_benefits ignores the input (main's line) 2 4
| instead of & in the CA gate 5 3, 4 and both limit tests
The input also gates the reported limb of is_carer_for_benefits 1 5 (after 1e1d87e4; before, none)

The first six property runs used the file before 1e1d87e4, which only adds an assertion, so each of those failures still holds.

Merges

git merge-tree --write-tree --name-only HEAD <commit>, all clean (exit 0, no conflicted files). I re-read the PR heads with gh api .../pulls/<n> --jq .head.sha and main with gh api .../branches/main --jq .commit.sha before posting.

Target Head Result
main 9b456bda65f6f01daddd89b02a77954f6a9114ad clean
#2543 71704cd3ac21a6fef37043a4140b8e209b7452e4 clean: #2543 changes the taper module's imports and excess lines, this PR only the meets_work_condition line and its comment
#2827 f9fdc636a34ce29e0de508b0b5386ea70175e727 clean
#2818 caeab613dc0c67461a7ea961bc842a1a1e0755e1 clean
#2340 8eb9a0af7c9c70b07461d4181139c2b141806c81 clean
#2806 5961424461ff5ca4b7f87582d37d55314c5411b6 clean
#2857 (issue #2791's draft PR) c79f7e6092102043b8fd3838cc3bd5f7ac57d3ab clean

On scratch merges I also ran the new YAML; it passes (14) on main at 9b456bda (and earlier at 1d4d020a), #2543 and #2827, and on #2857 at both its earlier head (aad18681) and its current one. Each of those PRs' own changed YAML passes on the merge too: #2857 13 (at both heads), #2543 56, #2827 22. #2857's supplement still pays 52 weeks for a full-year model award and nothing without one, so this PR's supplement values (£608.40 and 0) hold after both merge.

CI and aggregate impact

CI on 1e1d87e4: all 22 check runs succeed (21 checks; Fix evidence ran again after I edited the PR description), including Test / Python 1/7 to 7/7, Test / Result, Test / YAML, Lint, Fix evidence, Changelog fragments, the documentation builds and the install smoke tests on Python 3.11 to 3.14.

Aggregate impact (run 41647489889), headline: "Aggregate impact on certified data: pass", with "Checks: 0 broken by this change, 1 failing on both sides, 0 fixed. Moves flagged for review: 0". The report also says "No household's net income changes in any year" and lists no change in any year in receipts, the government balance, poverty or inequality. That matches the reason in the PR body: the input defaults to true and no dataset supplies it. The check that fails on both sides is sign:vat (VAT excluding private school fees is never negative), which this PR doesn't touch.

Axiom packet

I posted AXIOM_ISSUE.md above, quoting only law from the brief. Two checkers and one verifier per finding reviewed it twice against the brief's law texts, and I applied every confirmed fix:

  • each case's conditions now apply only to its own benefit, since s.70(7) bars Carer's Allowance and Carer Support Payment for the same day;
  • reg 4(1A) has no "is likely to be", so its hours must be actual;
  • reg 5(2) makes 35 hours necessary but not sufficient, so regular and substantial care stays an input;
  • reg 3(1)'s floor stays pending until the follow-up ingests SSCBA Sch 4 Pt V para 2(a);
  • s.70(7ZA) and reg 5(3) are now quoted and named;
  • the review_finding's definition now includes the reg 3(1) payments.

Skipped

  • None of the tests I ran skipped. I ran no microsimulation-marked tests and no survey datasets (no Hugging Face access); CI's aggregate impact covers the certified data.
  • I didn't run make documentation: the only docs page change is one sentence.
  • The Axiom packet's Labels: pe-parity issue needs a blocker line if the hub files it as queued (CONTRIBUTING asks for one). I don't know the blocker, so I left it to the hub.

Judgment calls

  • Two docstrings outside the brief's list (uc_unable_to_provide_childcare, meets_uc_minimum_age_condition), the docs page and two test comments said the hours limb doesn't check the person cared for; my change made that false, so I fixed them. I didn't edit docs/book/assumptions/carer-support-payment-earnings.md: its sentences on the cared-for person's conditions still hold at the default.
  • The new variable's documentation names Northern Ireland without naming its department. The model applies the gate there, and I have no NI text to quote.
  • The UC YAML case sets would_claim_carers_allowance: false, so the award differs by exactly the carer element (£5,098.80 against £7,610.88), without Carer's Allowance as income.
  • The couple case sets the input false for the elder, the benefit unit head who gets the award on main, so the case also fails on main.
  • Invariants: I added invariant 6, extended invariant 5 to is_carer_for_benefits, and restated 2 and 3 as above.
  • The Axiom packet's module paths for s.70 and SI 1976/409 are proposals by analogy with the reg 5 path. The packet marks them so.

Generated by Claude Code

@juaristi22 juaristi22 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed 1e1d87e4fd3d9394f0299716b924e5d92179811e. COMPLETE — no critical findings or material evidence gaps; one nonblocking source/documentation correction remains.

A1 — Correct the Scottish definition locator and companion award week. The new input's reference title at policyengine_uk/variables/gov/dwp/cares_for_severely_disabled_person.py:58, the description and actual Axiom #534 issue cite SSI 2023/302 regulation 2(2). Regulation 2 is unnumbered; cite regulation 2 instead, retaining the correct /2 corpus selector. The filed Scottish case 3, inherited by case 4, also calls 2–8 November 2026 an award week, but those dates are Monday–Sunday. Use Sunday–Saturday dates, such as 1–7 November 2026. The 35-hour/34-hour expectations can stay. The operative gate and law are supplied; this is not a wrong-cash or missing-material-law finding.

The GB/NI/Scottish qualifying-recipient conditions and affected UC exceptions were independently checked against official evidence. All 205 focused checks and seven final-output cases passed. The cases cover UC/PC offsets, reported receipts, under-18 and childcare eligibility, with omitted input exactly matching explicit true. Default true remains the disclosed imputation; it does not establish legal eligibility for a known nonqualifying recipient. In the England case, setting false raises UC as the Carer's Allowance deduction disappears, while final net income still falls by £2,512.08. Reported-receipt cases remain unchanged.

An initial external HBAI diagnostic assumption was corrected for an indirect Warm Home Discount effect before PR tests executed; its separate log is retained. No private-data aggregate or broad author test claims were adopted as independent validation.

Current-head CI is green. Approval is withheld while A1 remains open and the PR is a draft.

This branch has not been deployed

No deployments
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.

Carer's Allowance is paid for caring for someone with no qualifying disability benefit (SSCBA 1992 s. 70(1)-(2))

3 participants