Skip to content

Use the Universal Credit young person in Scotland's working-age Council Tax Reduction - #2288

Draft
MaxGhenis wants to merge 4 commits into
mainfrom
scottish-ctr-uc-young-person
Draft

MaxGhenis wants to merge 4 commits into
mainfrom
scottish-ctr-uc-young-person

Conversation

@MaxGhenis

@MaxGhenis MaxGhenis commented Oct 11, 2026 •

Copy link
Copy Markdown
Collaborator

Fixes #2286

Summary

Scotland's working-age Council Tax Reduction scheme defines a "young person" as a Universal Credit qualifying young person (QYP). The model used the Child Benefit QYP for every scheme, so in Scotland it could treat as a lone parent someone the Scottish regulations do not, and count the income of someone outside the family.

On main (9475c95), 2026-27: a single claimant aged 22 in Edinburgh, not on Universal Credit, with a 19-year-old at school who is past Universal Credit's 1 September and earns £2,000:

Variable main This PR Why
council_tax_reduction_applicable_amount £4,968.60 £3,933.80 single under 25 (£75.65 × 52), not lone parent (£95.55 × 52)
council_tax_reduction_applicable_income £3,406.60 £1,406.60 the 19-year-old's £2,000 no longer counts; the claimant's Child Benefit does

(The model counts a young person's own earnings as the family's. That is an older approximation, not the law: SSI 2021/249 reg. 36(2) says a young person's income "is not to be treated as the income and capital of the applicant". The row shows who the model counts as family, not a statutory income figure.)

This is a follow-up from #2279.

The law

Council Tax Reduction (Scotland) Regulations 2021 (SSI 2021/249), in force 1 April 2022 (reg. 1):

  • Reg. 6(1): "In these Regulations “young person” means a person who falls within the definition of “qualifying young person” in regulation 5 of the 2013 Regulations (meaning of qualifying young person)." Reg. 4 defines "the 2013 Regulations" as the Universal Credit Regulations 2013.
  • Reg. 4: "“lone parent” means a person who has no partner and who is responsible for and a member of the same household as a child or young person".
  • Reg. 7(2)-(3): "A person is responsible for a child or young person who normally lives with them. But a person is not responsible for a young person if the two of them are living as a couple." Reg. 7(8): no one is responsible for one "placed with a foster carer in accordance with the Looked After Children (Scotland) Regulations 2009".

The other schemes use the Child Benefit definition, as the model already does:

Scheme Young person Source
Scotland, pension age "a person who falls within the definition of “qualifying young person” in section 142 of the 1992 Act" SSI 2012/319 reg. 4(1)
England "a person who falls within the definition of qualifying young person in section 142 of the SSCBA" SI 2012/2885 reg. 2
Wales the same words WSI 2013/3029 reg. 2
Scotland, working age, to 31 March 2022 the section 142 definition SSI 2012/303 reg. 4 as made

Where the two definitions differ today: a 19-year-old on a non-advanced course begun before 19 is a Child Benefit QYP until 20 (Child Benefit (General) Regulations 2006 reg. 3), but a Universal Credit QYP only until the 1 September after their 19th birthday (UC Regs 2013 reg. 5(1)(b)). After #2279 they also differ for a 16-year-old outside education, until Child Benefit's own 16-year-old rule is modelled.

Change

  • New is_child_or_young_person_for_council_tax_reduction (Person). In Scotland, for a family that is not a pensioner for Council Tax Reduction, from 2022-23: is_child_or_qualifying_young_person_for_universal_credit (which already leaves out a looked-after child) and not the claimant or partner. Everywhere else: is_child_or_young_person_for_legacy_benefits, as before.
  • New parameter gov.local_authorities.scotland.council_tax_reduction.working_age.young_person_follows_universal_credit: false, then true from 1 April 2022.
  • New is_responsible_for_child_or_young_person_for_council_tax_reduction and is_council_tax_reduction_lone_parent (BenUnit), built on that flag.
  • council_tax_reduction_applicable_amount reads the new lone-parent flag; a single person is a claimant with no partner who is not that lone parent.
  • council_tax_reduction_applicable_income counts the claimant, the partner and the members the new flag names, where it counted the legacy flag's. It also keeps counting a Council Tax Reduction applicant who is a Child Benefit young person (see below).

A household head who applies alone. When the person liable for the council tax heads the household but is not the benefit unit's claimant or partner (council_tax_reduction_head_applies_alone), they are the applicant. main's income mask (claimant and partner, plus the legacy young person flag) reached such a head only if they were a Child Benefit young person. A first version of this PR swapped in the new flag, so a 19-year-old head in training past the Universal Credit terminal date dropped out of their own means test, earnings and all. The applicant's own income always counts (SSI 2021/249 reg. 36(1)), so the mask now keeps an applicant who is a Child Benefit young person (YAML Cases 9 and 10). The review of this PR found it. An applicant who is neither the claimant, the partner nor a young person still does not count: that is #2078's fix (means-test the applicant and partner), not this one's.

is_lone_parent and is_single_person are unchanged; Income Support, Housing Benefit and the pensioner earnings disregard still read them.

Invariants

  1. The flag is the Universal Credit test exactly where the family is in Scotland, is not a Council Tax Reduction pensioner and the year is 2022-23 or later. Everywhere else it equals the legacy flag, so existing schemes are unchanged.
  2. No claimant or partner is their own benefit unit's child or young person, under any scheme.
  3. A member under 16 who is not looked after is in the family under every scheme.
  4. Where a member's Universal Credit and Child Benefit QYP statuses agree, the flag does not depend on the country, the pensioner test or the year.
  5. A lone parent is a single claimant with at least one such member, and a working-age family's applicable amount, less premiums, is the personal allowance the table gives for a couple, a lone parent or a single person.
  6. A household head aged 18 or 19 who applies alone, who counted as a Child Benefit young person, keeps their earnings in the means test under every scheme; a member who is not the applicant counts only as that scheme's young person.

Tests

  • Properties, new test_council_tax_reduction_young_person_properties.py (four countries; years 2021, 2022 and 2026):
    • invariants 1 to 3, exhaustively: ages 14 to 21, every education value, training, own-right benefits, looked-after status, the UC terminal date and the entry age (2,048 subjects), under all 8 country and pensioner combinations in each year, once beside a claimant aged 45 and once as the claimant of a benefit unit of their own. It also asserts the two definitions part only in Scotland's working-age scheme, and only from 2022-23.
    • invariants 1 to 3 again on generated benefit units (Hypothesis: a supplied claimant, optional partner and up to four others aged 0 to 25), where a claimant can be a QYP;
    • invariant 4: each generated family under all 8 combinations in each year;
    • invariant 5: an independent allowance table;
    • a fixed test that the Scottish working-age flag differs from the legacy flag for a 19-year-old past the UC terminal date and nowhere else;
    • invariant 6, exhaustively: England, Wales and Scotland, ages 18 and 19, school or approved training, either side of the UC terminal date, with the member heading the household (and applying alone) or not: 48 families.
  • YAML, new council_tax_reduction_young_person.yaml, ten cases hand-computed from the allowance parameters:
Case Scheme and family Expected
1 Scotland working age; claimant 22, 19-year-old at school past the UC terminal date, earning £2,000 not a young person; not a lone parent; applicable amount £75.65 × 52 = £3,933.80; income £27.05 × 52 = £1,406.60
2 as 1, before the UC terminal date young person; lone parent; £95.55 × 52 = £4,968.60; income £3,406.60
3 England, as 1 Child Benefit definition: £4,968.60 and £3,406.60
4 Wales, as 1 Child Benefit definition: £4,968.60
5 Scotland pension age; claimant 70, as 1 Child Benefit definition; £256.00 × 52 = £13,312
6 Scotland working age in 2021-22, as 1 Child Benefit definition; £74.70 × 52 = £3,884.40
7 Scotland working age; claimant 22, child aged 10 lone parent under either definition: £4,968.60
8 Scotland working age; lone 17-year-old at school a UC QYP but not their own young person; £3,933.80
9 Scotland working age; a 19-year-old in approved training past the UC terminal date heads the household and applies alone, earning £10,000; their parents are the benefit unit's claimant and partner not a young person under the Scottish scheme, still the applicant; income £10,000
10 England, as 9 a Child Benefit young person; income £10,000

Mutation checks, each applied alone in a copy of the branch:

Mutation YAML case that fails Property tests that fail
Always the Child Benefit definition 1 exhaustive grid; fixed 19-year-old test
Scottish pension-age scheme also uses Universal Credit 5 exhaustive grid; fixed 19-year-old test
Claimant and partner not excluded in the Scottish branch 8 exhaustive grid; generated families under every scheme
Universal Credit definition before 2022-23 too 6 exhaustive grid

The first run of these showed the generated-unit property passing with the Scottish branch removed, because random families rarely include a Scottish working-age 19-year-old past the terminal date. The exhaustive grid, and its lone-claimant half, were added for that reason.

Run locally at 41b1d31:

  • pytest policyengine_uk/tests/test_council_tax_reduction_young_person_properties.py: 6 passed (the five before, and invariant 6's).
  • policyengine-core test on council_tax_reduction_young_person.yaml: 10 passed.
  • ruff format --check and ruff check on the changed files: clean.

Mutation check of the new term (mutation/prF_r1.json): dropping the applicant term fails YAML Case 9 and test_applicants_own_earnings_count_under_every_scheme; Case 10 (England) passes either way, as it should, because there the legacy flag already counts the head.

Earlier runs (the model code at a7d0127; 76ed60e and 9dc3e3c add the exhaustive test):

  • pytest policyengine_uk/tests/test_council_tax_reduction_young_person_properties.py: 5 passed.
  • policyengine-core test on the new file: 8 passed. On the 28 YAML files that mention Council Tax Reduction, is_lone_parent or is_single_person: 370 passed.
  • pytest on the 10 other Python test files that read Council Tax Reduction outputs (claimant, family scheme, pensioner earnings disregard, Pension Credit, carer income, legacy award readers, means-test income, pension-age severe disability premium, sharers and lodgers, State Pension Credit qualifying age): 89 passed.
  • ruff format --check and ruff check on the changed files: clean.

The full suites run in CI.

Microsimulation impact

Real runs on Enhanced FRS 2024-25 (uk-data 1.58.0, sha256 5ba399ea5ab9a6c7), main 9475c95 against this branch at 41b1d31, one run each for 2024-25 to 2030-31, exact comparison of every record (113,589 people). The branch was first run at a7d0127 and re-run at 41b1d31 after the income-mask change; both give the same result.

No record changes in any year. council_tax_reduction, council_tax_reduction_applicable_amount, council_tax_reduction_applicable_income, simulated_council_tax_reduction_benunit, household_net_income, universal_credit, housing_benefit, pension_credit and both poverty flags are identical in every record. There are no winners or losers.

The reason is in the data, not the rule:

  • The new path is exercised. In 2026-27, 184 records (101,037 weighted people) are young persons aged 16 to 19 in Scottish working-age families.
  • But no record has a Universal Credit QYP status that differs from its Child Benefit one (0 of 113,589 people in each year). The dataset sets is_before_universal_credit_qualifying_young_person_terminal_date to true for all 102 Child Benefit QYPs aged 19, so the one difference main can express never arises in it.

The change therefore affects household calculations now (the table at the top), and the microdata once the two definitions diverge there, as they will for 16-year-olds outside education when #2279 lands.

Not in this PR

axiom: SSI 2021/249 regs 4, 6 and 7 TheAxiomFoundation/rulespec-uk#448 queued (blocker stated there: the rows are not cited by any module and a billed encoder run needs approval; UC reg 5 itself is encoded at uk:regulations/uksi/2013/376/5#qualifying_young_person; addendum adds the reg. 4 "family" output and regs 8 and Sch. 1 para. 13)

🤖 Generated with Claude Code

MaxGhenis and others added 3 commits October 10, 2026 19:50
The Council Tax Reduction (Scotland) Regulations 2021 reg. 6(1), in force
1 April 2022, define a young person as a qualifying young person under UC
Regs 2013 reg. 5. The model used the Child Benefit definition for every
scheme: is_lone_parent in the applicable amount and the legacy flag for the
members whose income counts.

Add is_child_or_young_person_for_council_tax_reduction (the Universal Credit
test, minus the claimant and partner, in Scotland's working-age scheme from
2022-23; the legacy flag elsewhere), with the responsibility and lone-parent
flags built on it, and read them in council_tax_reduction_applicable_amount
and council_tax_reduction_applicable_income. England, Wales, Scotland's
pension-age scheme (SSI 2012/319 reg. 4) and Scotland before 2022-23 (SSI
2012/303 reg. 4) keep the Child Benefit definition.

Fixes #2286

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Mutation testing showed the generated benefit units rarely draw a Scottish working-age 19-year-old past the Universal Credit terminal date, so the scheme-selection property passed with the Scottish branch removed. Add an exhaustive grid (ages 14 to 21, every education value and flag, each country and pensioner test, 2021, 2022 and 2026) that also asserts the two definitions part only there.

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

Mutation testing showed that dropping the claimant filter from the Scottish branch failed only one generated-unit property. Add each subject of the exhaustive grid as the claimant of a benefit unit of their own, with a check that some are qualifying young persons by status.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Review round 1 of #2288: a household head aged 18 or 19 who applies alone
is not the benefit unit's claimant, and the income mask reached them only
as a Child Benefit young person. Past the Universal Credit terminal date
the Scottish working-age scheme no longer reads them as a young person,
and their earnings dropped out. The applicant stays counted (SSI 2021/249
reg. 36(1)). Adds YAML Cases 9 and 10 and a property test, documents the
looked-after approximation, and corrects a test comment.

Not yet run locally: the host was over its memory limit. CI runs them.

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

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.

Scotland's working-age Council Tax Reduction uses the Child Benefit young person, not the Universal Credit one (SSI 2021/249 reg 6)

1 participant