Use HBAI population groups for UK poverty breakdowns; stop requesting the deprecated is_child/is_adult
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 35/100
Research direction
Start with src/policyengine/tax_benefit_models/uk/model.py and uk/household.py, then inspect src/policyengine/outputs/poverty.py and cliff_impact.py. Confirm the policyengine-uk pin includes the HBAI variables, and run the existing snapshot and poverty tests before changing the UK output keys. Done means deprecated UK variables are no longer read, HBAI groups reproduce the enhanced FRS split, and snapshots, poverty tests, executor keys, and labels are consistent.
Written by the indexing model from the issue text.
Description
Why
PolicyEngine/policyengine-uk#1896 replaces the generic is_child (age < 18) and is_adult (age >= 18) flags inside the UK model with each programme's legal definition, and adds explicit HBAI (Households Below Average Income) variables for statistics. UK law has no single definition of a child: Child Benefit, Universal Credit, tax credits, Pension Credit, the legacy benefits and student support each define their own, and HBAI defines a dependent child as under 16, or 16-19, unpartnered, living with parents and in full-time non-advanced education or unwaged government training.
is_child, is_adult, family_type and the other generic variables stay in policyengine-uk as deprecated shims with their old age-18 formulas, so nothing breaks. This issue moves policyengine.py onto the explicit variables once its policyengine-uk pin moves past the release containing that PR.
Changes
src/policyengine/tax_benefit_models/uk/model.py: dropis_adultandis_childfrom the UK person output columns (lines ~63-65) and addhbai_person_type(enum:CHILD,WORKING_AGE_ADULT,PENSIONER) oris_hbai_dependent_child. Replace the benunitfamily_typecolumn (line ~94; deprecated, age-18 split) withrelation_type(claimant has a partner) if a family column is still wanted. Updateuk/household.pyaccordingly and regenerate the UK household snapshot fixtures.src/policyengine/outputs/poverty.py: UK poverty by group should use the HBAI population groups, not the age bands inAGE_GROUPS(child <= 17, adult 18-64, senior 65+). HBAI groups: dependent children, working-age adults (below State Pension age) and pensioners (at or above State Pension age), i.e.hbai_person_type. Keep age bands where an age band is meant, but label them as age bands (for exampleaged_0_to_17,aged_18_to_64,aged_65_and_over), and keep the US groups separate from the UK ones. The api-v2 simulation executor and the app's "Children / Working-age adults / Seniors" labels read these groups: coordinate the key change (for the UK, "Seniors" should read "Pensioners").src/policyengine/outputs/cliff_impact.py: the cliff-share denominator sumsis_adult. Make it an explicit per-country predicate (for the UK, people aged 18 or over viaage, oris_hbai_adultif the intended population is HBAI adults) and document it; the numerator currently counts everyone.
Acceptance
- No policyengine.py code reads a deprecated UK variable (
is_child,is_adult,num_children,num_adults,family_type,child_index,adult_indexexcepted). - UK poverty-by-group outputs reproduce HBAI's population split on the enhanced FRS.
- Snapshot and poverty tests updated.
🤖 Generated with Claude Code
- Dominant language
- Python
- Stars
- 8
- Forks
- 9
- Avg merge
- 15h 28m
- Merged PRs (30d)
- 13
Getting set up
- No Dockerfile or Docker Compose file
- No pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from PolicyEngine/policyengine.py
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
PolicyEngine/policyengine.py#549 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
PolicyEngine/policyengine.py#473 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
PolicyEngine/policyengine.py#436 · 1 comment ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
PolicyEngine/policyengine.py#408 ·
Maintainers usually reply within 1 day
-
Difficulty 4/5 3-5 days Newbie friendliness 58/100
PolicyEngine/policyengine.py#543 ·
Maintainers usually reply within 1 day
All issues in PolicyEngine/policyengine.py
Similar issues
-
repo-audit
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
scverse/repo-health#20 ·
Maintainers usually reply within 1 day
-
/context/prime scope override double-prefixes an entity-ref project and drops its scoped memoriesOpen
Difficulty 2/5 1-3 hours Newbie friendliness 85/100
phasespace-labs/palinode#232 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
collective/icalendar#1858 · 1 comment ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
Maintainers usually reply within 1 day
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
langflow-ai/langflow#15496 ·
Maintainers usually reply within 1 day