You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
RENT_PRIVATELY appears twice and RENT_FROM_HA (housing association) is missing, so a housing-association tenant is never renting to the engine. Everything that reads is_renting treats them as non-renters.
Where it was found. While making the WAS wealth donor coherent with tenure in PolicyEngine/microcosm#1063 (items 5 and 6, PR PolicyEngine/microcosm#1089), the data side had to carry four explicit tenure flags (owned outright, mortgaged, renting privately, renting socially) rather than read is_renting, because the engine flag disagreed with tenure_type for every RENT_FROM_HA household. In the FRS 2024-25 frame that is about a tenth of all households.
Expected. The list should be RENT_PRIVATELY, RENT_FROM_COUNCIL, RENT_FROM_HA (the three renting values of TenureType). A test that asserts is_renting is true for each renting tenure value and false for the two owner values would have caught the duplicate.
Filed from the microcosm#1063 work; the data-side workaround stays in place either way.
Confirmed on main. is_renting.py lists RENT_PRIVATELY twice and omits RENT_FROM_HA, so housing-association tenants read as not renting.
On scope, inside policyengine-uk the bug is narrower than it might look:
The benefit side doesn't read this variable. LHA_eligible reads benunit_is_renting, and that already lists all three renting tenures, RENT_FROM_HA included.
The household-level is_renting is read only by the two student-finance proxies, maintenance_loan_living_arrangement and maintenance_loan_household_income. So inside the engine, the effect is on maintenance-loan living arrangements for students in housing-association homes.
Downstream, uk-cliff-watch reads is_renting directly, so it is affected too.
A one-line fix plus the parametrised test you describe (true for the three renting values, false for the owner values) would close it. It's also worth making is_renting and benunit_is_renting share one tenure list, so the two can't drift again.
Activity
vahid-ahmadi commentedon Oct 4, 2026
Confirmed on
main.is_renting.pylistsRENT_PRIVATELYtwice and omitsRENT_FROM_HA, so housing-association tenants read as not renting.On scope, inside policyengine-uk the bug is narrower than it might look:
LHA_eligiblereadsbenunit_is_renting, and that already lists all three renting tenures,RENT_FROM_HAincluded.is_rentingis read only by the two student-finance proxies,maintenance_loan_living_arrangementandmaintenance_loan_household_income. So inside the engine, the effect is on maintenance-loan living arrangements for students in housing-association homes.uk-cliff-watchreadsis_rentingdirectly, so it is affected too.A one-line fix plus the parametrised test you describe (true for the three renting values, false for the owner values) would close it. It's also worth making
is_rentingandbenunit_is_rentingshare one tenure list, so the two can't drift again.