Conversation
UC Regs 2013 reg 32(1)(b): the other member of a couple who is not in paid work still lets the claimant meet the work condition if they have limited capability for work, have regular and substantial caring responsibilities for a severely disabled person, or are temporarily absent from the claimant's household. Reg 32(2)(b) treats a claimant receiving SSP, SMP, SPP or maternity allowance as in paid work, and reg 32(1)(a) also accepts an offer of paid work for the claimant's limb. The condition is now pairwise: one claimant meets limb (a) and every other claimant meets limb (b). Limb (i) uses uc_limited_capability_for_WRA, (ii) is_carer_for_benefits, (iii) a new input. Adds YAML tests from the law and ADM F7011-F7015, and property tests including an exhaustive differential check against a reference transcribed from reg 32. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Oct 2, 2026
- Describe the limited-capability and caring exceptions as the approximations they are. is_carer_for_benefits' hours branch checks neither the cared-for person's qualifying benefit (SSCBA 1992 s.70(2), imported by reg 30(1)(a)) nor the reg 30(3) paid-care exclusion. - Rename the offer input to uc_has_offer_of_paid_work_starting_by_end_of_next_assessment_period, so its name carries reg 32(1)(a)'s deadline. - Property tests: workers have employment income, self-employment income or hours alone, and every exhaustive family has a dependant. This kills two mutants the first exhaustive version missed (an unmasked dependant, and employment income standing in for in_work). - YAML: Ben and Sara's case now includes Sara's mother on the higher rate of attendance allowance; add three-flagged-claimant cases and a self-employment case. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The exhaustive test now tries every payment where one member of a couple has only an offer of work and the other only that payment, and gives non-carers one hour under the minimum care hours. That kills a limb (b) that leaves out maternity allowance and a carer test of any care hours. Adds a YAML case: an offer-only claimant with a partner on maternity allowance. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The partner on maternity allowance meets both limbs; the condition holds because the offer-only claimant meets (a) and the partner meets (b). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Collaborator
Author
|
Independent review record (Subfleet review lanes; the reviews are kept locally):
🤖 Generated with Claude Code |
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
uc_childcare_work_conditionrequired every claimant and partner to be in work. Its documentation said the partner exceptions in UC Regs 2013 reg 32(1)(b) and the treated-as-working rules of reg 32(2) were not modelled. This PR models them:uc_limited_capability_for_WRA, the approximation main already uses for LCW in the work allowance and the reg 8 minimum age. It defaults tois_disabled_for_benefits(disability benefit receipt), not an observed work capability assessment;is_carer_for_benefits, an approximation. It means receipt of Carer's Allowance or Carer Support Payment, or at least 35 hours of care a week. The hours branch doesn't check that the person cared for is severely disabled, or that the carer isn't paid for the caring;uc_is_temporarily_absent_from_claimant_household. Nothing in the model observes this.uc_childcare_treated_as_in_paid_work.uc_has_offer_of_paid_work_starting_by_end_of_next_assessment_period, meets the claimant's limb only, not the other member's.any(a) & all(b), which wrongly fails a claimant with only an offer of work and a working partner. The property tests below include that mutant and kill it.Example, 2025-26: the claimant earns £15,000, the partner has limited capability for work and doesn't work, and they have one child aged 3 with £5,000 of childcare costs.
uc_childcare_work_conditionuc_childcare_elementLaw
UC Regs 2013 reg 32 (legislation.gov.uk data.xml, current version fetched 2026-10-02):
Reg 30(1) defines (ii): a person who satisfies the conditions for carer's allowance (or would, but for the earnings limit or Scottish residence), or who is entitled to carer support payment.
ADM chapter F7 agrees:
What is still not modelled
in_workproxy covers it: hours or earnings at any point in the year count as paid work.is_carer_for_benefitschecks neither, so the survey's care-hours field counts caring for anyone. The variable's own documentation misplaces the qualifying-benefit condition as "the second limb of regulation 30"; Reduce Carer's Allowance and Carer Support Payment by overlapping benefits #1994 rewrites that documentation, and I've suggested the correction there.uc_limited_capability_for_WRAstands for an LCW determination through disability benefit receipt. Lift the benefit cap only for the support component and the people HB reg 75F and UC reg 83 name, and cap only the family's benefits #2076 gives the model its own LCW variable.Invariants
These hold for every input in the tested domain, and the tests run them. The domain is single claimants and couples, each with one dependant child or young person. Workers have employment income, self-employment income or hours alone, the three routes into the
in_workproxy. The exceptions are the model's approximations above (the reference reads the LCWRA input and care hours ≥ the Carer's Allowance minimum), not the full legal tests.Differential, exhaustive over route sets. The condition equals a reference transcribed from reg 32 in pairwise form: (a)(A) ∧ (b)(B), or (a)(B) ∧ (b)(A). This is checked for all 6 routes (work, a listed payment, an offer, LCW, carer, absence):
Every family has a dependant: idle in half of them, with a cycling route set of its own in the rest.
Monotonic. Giving any member paid work, a listed payment, an offer or an exception never removes the condition.
A couple both in paid work always meet it.
With no member meeting limb (a), no exception meets it.
Swapping the two members of a couple doesn't change the result.
A dependant's work, payments and circumstances never matter.
The childcare element is never negative, and it is zero whenever the condition fails.
Mutation check. Ten mutants each fail the exhaustive differential test, and the real formula passes:
any(a) & all(b);claimant &);Three versions of the test let mutants through:
The test now builds those cases and kills all of them.
Tests
uc_childcare_work_condition_reg_32.yaml: 25 cases worked by hand from reg 32, reg 30 and ADM F7011-F7015.test_uc_childcare_work_condition_properties.py: invariants 1-7 with Hypothesis, plus the exhaustive test. It runs in about 90 s locally.Impact (Enhanced FRS)
These are real Microsimulation runs, one per package state, on the Enhanced FRS 2024-25 (sha256
e433e532…, the same file as the other UC PRs this week), for every year 2025 to 2030. Base is main788d692ea(after #1950 and #1881 merged). The branch is634465e29, this PR merged with that main. Both are clean trees. Later commits change only tests, so these runs stand for the PR head. Every figure below is identical, to the £1,000, to the earlier runs of main3c48247ebagainst this PR's first headdb826f6fa.in_workalready counts them.Interactions with open PRs
Lift the benefit cap only for the support component and the people HB reg 75F and UC reg 83 name, and cap only the family's benefits #2076 adds
uc_limited_capability_for_work. Whichever of the two merges second should switch limb (i) ofuc_unable_to_provide_childcarefromuc_limited_capability_for_WRAtouc_limited_capability_for_work. Under Lift the benefit cap only for the support component and the people HB reg 75F and UC reg 83 name, and cap only the family's benefits #2076, an ESA award without the support component removes LCWRA but not LCW. I've commented on Lift the benefit cap only for the support component and the people HB reg 75F and UC reg 83 name, and cap only the family's benefits #2076.Model a Universal Credit claim by a member of a couple as a single person (UC Regs 2013 reg 3(3)) #2084 (reg 3(3) single claims) also edits
uc_childcare_work_condition. On merge:is_uc_single_or_joint_claimant;is_uc_claimantmember.in_work | uc_unable_to_provide_childcare.I've posted the resolved formula on Model a Universal Credit claim by a member of a couple as a single person (UC Regs 2013 reg 3(3)) #2084.
axiom:
uk/regulation/uksi/2013/376/32(1)(b)(i) and the (2)(b) SSP limb encoded-correct (32.test.yamlcouple_claimant_treated_as_paid_work_and_other_member_unable); TheAxiomFoundation/rulespec-uk#430 queued (reg 32(2) for the other joint claimant, either joint claimant as "the claimant", and companion cases for (b)(ii)-(iii), each payment and offers)🤖 Generated with Claude Code