Skip to content

Programmes read the raw household head flag, so a malformed input makes them disagree about whose household it is #2059

Description

@MaxGhenis

is_household_head is an input, so it can flag several members of a household, or none. Programmes that read it directly then disagree about whose household it is.

How the input goes wrong

  • A user situation flags two members, for example both members of a couple, or the householder and a lodger.
  • A user situation flags no one in a household. This also happens without anyone writing false: once any person in a simulation has the input, every person without it defaults to false, not to the formula.

The Family Resources Survey data is not affected. policyengine-uk-data sets the flag from the survey's household reference person (hrpid == 1).

What happens today

Council Tax Reduction settles on one head (#2009: the eldest flagged member, or the eldest member where none is flagged). These variables read the raw flag instead:

  • rent: is_liable_for_household_rent, share_of_household_rent, personal_rent, pays_rent_to_householder;
  • non-dependants and size criteria: is_non_dependant_of_household_head, uc_non_dep_deductions, LHA_allowed_bedrooms, housing_benefit_LHA_allowed_bedrooms, lha_renter_has_non_dependant;
  • the maintenance loan proxies: maintenance_loan_living_arrangement, maintenance_loan_household_income.

Household calculations on #2009's head (4b84ea069), for a home with a £12,000 rent:

Input Result
Two single adults in separate families, both flagged Each family is liable for £6,000 of rent. The second flagged family is not a Council Tax Reduction claimant, and is not a non-dependant for Universal Credit, Housing Benefit or Council Tax Reduction either.
A couple, both flagged The rent is counted on each partner, so the family's rent is £24,000.
Two single adults in separate families, neither flagged No one is liable for any rent. Council Tax Reduction still treats the elder adult's family as the claimant.

The first row is finding 8 of the review of #2009.

Proposed fix

  • Add one person-level household head, exactly one per household, with Give Council Tax Reduction to the household head's family, not the oldest adult's #2009's rule: the eldest flagged member; where none is flagged, the eldest member.
  • Define benunit_contains_household_head from it, and point every reader of the raw flag at one of the two.
  • Test several-flagged and none-flagged households across rent, non-dependants and Council Tax Reduction, with a property test that every programme agrees on the head's family for any flag input.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    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