Skip to content

PIP review: Adult Disability Payment in Scotland, a single-activity test, and PIP as the gateway to UC health support #2889

Open

Description

@juaristi22

Context

The independent review of PIP publishes its final report in November 2026. PolicyEngine/uk-pip-review-2026 tracks what the model needs, from its checklist (PolicyEngine/uk-pip-review-2026#10).

The PIP code has not changed from 2.144.0 to 2.175.7. That covers variables/gov/dwp/pip/, utils/pip.py, the points inputs and scenarios/pip_reform.py. This issue collects what the model still needs. Imputing points and calibrating the caseload are data work.

Already open

1. Adult Disability Payment, and a country test on PIP

pip_dl and pip_m (variables/gov/dwp/pip/) have no country test, and gov/social_security_scotland has no Adult Disability Payment. Scotland has replaced PIP with Adult Disability Payment, and DLA for children with Child Disability Payment. Datasets record Scottish awards in the PIP and DLA columns, so a PIP reform also changes Scottish households' payments (PolicyEngine/uk-pip-review-2026#1).

Proposal:

  • adp_dl and adp_m under gov.social_security_scotland.adult_disability_payment, with their own rates, equal to PIP's in current law.
  • A country condition on pip_dl and pip_m.
  • Adult Disability Payment wherever the law lists it beside PIP: the Carer's Allowance and Carer Support Payment qualifying benefits, the disability premiums, the benefit cap exemption and the LHA lists (Include the Scottish devolved disability benefits in the LHA size-criteria benefit lists #2041).
  • An input that marks Scottish receipt, so a dataset that writes one column per component keeps working until it writes Adult Disability Payment apart.
  • Child Disability Payment against DLA, in the same way.

2. A single-activity test (part of #1069)

The 2025 Pathways to Work green paper proposed that the daily living component require at least 4 points in one activity. pip_dl_points holds a total.

Two additions would let a reform apply that test without activity-level inputs:

  • a person input for the highest score in any one daily living activity, defaulting to -1 like the points inputs;
  • a parameter for the minimum single-activity score, at 0 in current law.

The activity-level model remains #1069's.

Documentation: in utils/pip.py, a category supplied for a year overrides points supplied for the same year. So threshold reforms reach people only when a dataset supplies points without categories, or points for a later year. The points docs page (#1725) could say so.

3. PIP as the gateway to the UC health element

uc_limited_capability_for_WRA defaults to is_disabled_for_benefits, less people whose own ESA award lacks the support component (#1989). No parameter lets PIP receipt decide it, which a recommendation to make PIP the gateway to UC health support would need (PolicyEngine/uk-pip-review-2026#6).

Proposal: a reform parameter naming which PIP awards, or later which points, give limited capability for work-related activity. Apply it before the 2026–2032 rebalancing step stores the element (#2798), so the stored amounts follow it.

4. Disability flags that follow PIP

is_disabled_for_benefits has no formula, and datasets also store is_severely_disabled_for_benefits and is_enhanced_disabled_for_benefits. So a PIP reform doesn't move the disability premiums (PolicyEngine/uk-pip-review-2026#7).

Proposal: formulas for the three flags from the benefits that confer them, with #2808's enhanced premium rule, so that datasets can stop storing them. The phasing in scenarios/pip_reform.py, which overwrites pip for a seeded 25%, would then reach the knock-ons too. #2877 stores that draw.

5. Carer's Allowance after the cared-for person's award ends

carers_allowance_weekly_by_part_of_year (utils/carers_allowance_taper.py) never reads the cared-for person's award (PolicyEngine/uk-pip-review-2026#2). #2860 adds cares_for_severely_disabled_person.

A follow-up rule would end a reported award when the cared-for person's qualifying benefit ends. It needs a decision on how datasets link carer and cared-for: for example, caring hours inside and outside the household as separate inputs.

6. Caseload growth in projected years (design question)

Categories carry forward from the dataset's year, and weights grow with population only. So the modelled PIP caseload stays flat, while DWP's Spring 2026 forecast for England and Wales grows each year to 2030-31 (PolicyEngine/uk-pip-review-2026#4). Letting projected years follow DWP's path, for example by drawing new awards among non-recipients with matching characteristics, is a design question for the engine and the data together.

Relationship to data work

None of Microcosm's data work for this event is decided. If any goes ahead, this is how it relates to the items above:

  • Writing Adult Disability Payment to its own columns would need item 1's variables and receipt input first. Until then, Scottish awards stay in the PIP columns, where Microcosm can still anchor them to Scottish Budget spending.
  • Drawing each recipient's highest single-activity score from DWP's per-activity tables would need item 2's input first.
  • Linking carers to the person they care for, from the FRS's caring-hours questions, would need item 5's inputs and Pay carer benefits only for caring for a severely disabled person #2860's.
  • Dropping the stored disability flags is possible only once item 4's formulas exist.
  • Imputing total points needs nothing new, because pip_dl_points and pip_m_points exist. A dataset would then have to supply points without categories (the documentation note under item 2).
  • The PIP and DLA caseload targets need nothing from this issue.

The published tables this work would use are requested in PolicyEngine/chronicle#420.

Not in this issue

Activity

  1. vahid-ahmadi commented on Nov 6, 2026

    @vahid-ahmadi
    Collaborator

    Thanks for pulling this together, María.

    Checks

    Checked on main at a866277 (2.175.8):

    • Confirmed: there is no Adult Disability Payment anywhere in the code, pip_dl and pip_m have no country test, and the points thresholds are 8 and 12. utils/pip.py lets a category supplied for a year override points for that year, as you say. The PIP files and scenarios/pip_reform.py last changed before 2.144.0 went to PyPI (21 October).
    • Item 1, design: 26 files outside pip_dl.py and pip_m.py read pip, pip_dl or pip_m (16 variables, including gov_spending and is_severely_disabled_for_benefits, and 10 qualifying-benefit lists). Datasets hold Scottish awards in the PIP columns (Microcosm UC child limit produces no budgetary impact #1095). A country test that zeroes pip_dl in Scotland would break the Scottish baseline until all 26 also read adp_dl, so the full split has to land as one piece. A smaller first step keeps every reader intact: pip_dl and pip_m take their rates by country, with Scotland on gov.social_security_scotland.adult_disability_payment.* rates that equal PIP's in current law. A reform to gov.dwp.pip.* then leaves Scotland alone, and the separate ADP variables can follow.
    • Item 1, Northern Ireland: NI PIP has its own regulations (SR 2016/217) at the same rates and sits in the same columns. The condition should exclude Scotland only. Whether NI counts in headline totals is a reporting choice (uk-pip-review-2026#1).
    • Item 1, scope: Pension Age Disability Payment (SSI 2024/166) sits in the same qualifying-benefit lists as ADP and CDP. Is it in scope here too?
    • Item 2: the 4-point rule is a green paper proposal, not current law. Your current-law parameter at 0 works. I lean to a contributed reform (gov.contrib, in_effect false), to match item 3.
    • Item 4: two of the three flags already have formulas. is_severely_disabled_for_benefits counts enhanced PIP daily living. is_enhanced_disabled_for_benefits tests DLA care at the highest rate only, which Count enhanced PIP daily living and AFIP for the enhanced premium #2808 widens. Dataset runs use the stored severe flag (policyengine-uk-data#494, an open PR). The code gap is a formula for is_disabled_for_benefits. The rest is turning stored values off, on the data side.
    • Item 5: Pay carer benefits only for caring for a severely disabled person #2860 is approved and already changes utils/carers_allowance_taper.py to read cares_for_severely_disabled_person (default true). The follow-up can build on it once it merges.

    Overlap

    Plan

    Nothing here blocks the drill. The event repo's England and Wales mask and its data-limit notes (uk-pip-review-2026#1) cover it.

    Item Priority Size Owner Next step
    #2892, minimum age Before the final report Small Vahid Mark ready once CI passes
    1. Scotland rates by country Before the final report Medium Vahid PR: ADP rate parameters equal to PIP's, pip_dl and pip_m select by country, NI unchanged
    3. PIP as the UC health gateway Before the final report Medium, large if #2798 needs work first Vahid Contributed reform naming the PIP awards that give LCWRA, applied before the rebalancing stores the element
    2. Docs note on categories over points Before the final report Small Vahid Add to the points docs page (#1725)
    2. Single-activity test Later, sooner if the report recommends it Small Vahid Person input (default -1) and contributed parameter, under #1069
    4. Disability flags Later Medium Vahid, after #2808 and #2877 Formula for is_disabled_for_benefits, then stop storing the flags with policyengine-uk-data
    1. Separate ADP, CDP and PADP variables in all lists Later Large Vahid One PR after the rates step, with the receipt input
    5. Carer's Allowance after the award ends Later Medium Vahid and María After #2860 merges, agree how datasets link carer and cared-for
    6. Caseload growth Later Large María and Vahid Design note for the engine and Microcosm

    Say if you disagree with the order.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions