Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
16 commits
Select commit Hold shift + click to select a range
46b370a
Draw is_apprentice for employees aged 21 to 24 on the UK spine (#1372)
vahid-ahmadi Oct 23, 2026
4b75e35
Regenerate the H2 UK spine parity fixture for is_apprentice (#1372)
vahid-ahmadi Oct 23, 2026
12f2dab
Repin the UK gate-battery digests in the contract tests (#1372)
vahid-ahmadi Oct 23, 2026
cdb6750
Require person weights for the person draws; temper the DfE rate's ci…
vahid-ahmadi Oct 23, 2026
6c4e177
Merge main into apprentice-imputation (#1373)
juaristi22 Oct 26, 2026
5c27c42
Size the apprentice draw on DfE's point-in-time count and gate it (#1…
juaristi22 Oct 26, 2026
9e2a468
Regenerate the UK coverage manifest for the apprentice draw (#1373, p…
juaristi22 Oct 26, 2026
aa06c57
Regenerate the H2 UK spine parity fixture for the apprentice draw (#1…
juaristi22 Oct 26, 2026
f475f7f
Merge main into apprentice-imputation after #1400 (#1373)
juaristi22 Oct 26, 2026
38cc5e7
Refuse an engine that misreads is_apprentice; hold its relief below N…
juaristi22 Oct 26, 2026
d22507f
Merge uk-pair-release-2151 (#1396) into apprentice-imputation (#1373)
juaristi22 Oct 26, 2026
4354c39
Name the apprentice gate's small cells unchecked, never failed (#1373)
juaristi22 Oct 26, 2026
c19320f
Merge main into apprentice-imputation after #1396 (#1373)
juaristi22 Oct 26, 2026
ab7c777
Lock policyengine-uk 2.162.8 for the apprentice minimum wage split (#…
juaristi22 Oct 26, 2026
c07f86f
Hand frs_person_draws the pay its relief reads (#1373)
juaristi22 Oct 27, 2026
5d76d92
Say the first-year default awaits María's signature (#1373)
juaristi22 Oct 27, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions changelog.d/uk-apprentice-draw.added.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Draw `is_apprentice` on the UK spine for employees aged 21 to 24, so the employer NICs zero rate for apprentices under 25 (SSCBA 1992 s.9B, policyengine-uk#2505) reaches them (#1372). The target is DfE's England apprentices in learning at the start of the academic year (participation less starts) per head aged 19 to 24, 3,689 per 100,000 in 2024/25, rather than the in-year participation rate (5,992). Employees are flagged in the order of their identity-keyed uniform until their weight is nearest it, and the new release-blocking gate `uk_stage_frs_person_draws_apprentices` checks the stage's receipt, holding the relief the flags imply at or below HMRC's NIC-NS1 for 2024-25 (£370m). The FRS has no apprenticeship variable; other ages keep the default False.
1 change: 1 addition & 0 deletions changelog.d/uk-policyengine-uk-2-162-8.changed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
The UK lock moves from policyengine-uk 2.162.3 to 2.162.8 for the apprentice minimum wage's split from `is_apprentice` (policyengine-uk#2683, released in 2.162.8 because 2.162.7 never reached PyPI): the apprentice rate now applies only under 19 or with `is_in_first_year_of_apprenticeship`, which the build leaves at its default (False; the engine-defaults register records it for María's signature), so the employees `frs_person_draws` flags keep their age-related minimum wage (#1373). The move also uprates reported council tax reduction with each household's council tax in projected years (policyengine-uk#2680), which changes values read at 2025 from the 2024 frame wherever the engine uses reported council tax reduction; screens income-related ESA and income-based JSA reports separately for people outside the claimant couple (policyengine-uk#2679); holds Universal Credit advance repayments at their cash amount under allowance reforms (policyengine-uk#2574; no baseline change); and annualises fiscal parameters past 2040 (2.162.4).
10 changes: 5 additions & 5 deletions docs/concept-coverage/policyengine-uk.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
# Concept coverage: policyengine-uk

Engine version `2.162.3`; concept schema `5a55669d0447`. Generated by `tools/refresh_concept_coverage.py`; do not edit by hand.
Engine version `2.162.8`; concept schema `5a55669d0447`. Generated by `tools/refresh_concept_coverage.py`; do not edit by hand.

- Engine inputs: 356
- Engine inputs: 357
- Fed by a concept: 41
- Structural: 11
- Uncovered: 304
- Uncovered: 305
- Mapped but missing from the engine: 0

## Inputs each concept feeds
Expand Down Expand Up @@ -58,6 +58,6 @@ Engine version `2.162.3`; concept schema `5a55669d0447`. Generated by `tools/ref

`accommodation_type`, `additional_residential_property_purchased`, `alcohol_and_tobacco_consumption`, `beer_draught_share`, `beer_litres`, `betting_exchange_commission`, `bingo_net_receipts`, `bus_fare_spending_reported`, `bus_subsidy_spending`, `cash_isa`, `cider_draught_share`, `cider_litres`, `cigarettes_per_week`, `cigars_grams_per_week`, `clothing_and_footwear_consumption`, `communication_consumption`, `consumer_debt`, `corporate_wealth`, `council_tax_band`, `cumulative_non_residential_rent`, `cumulative_residential_rent`, `dfe_education_spending`, `diesel_spending`, `directly_held_shares`, `domestic_energy_consumption`, `domestic_rates`, `ebr_energy_bills_credit_eligible`, `education_consumption`, `electricity_consumption`, `electricity_consumption_kwh`, `external_child_payments`, `financial_spread_betting_net_losses`, `food_and_non_alcoholic_beverages_consumption`, `full_rate_vat_expenditure_rate`, `gas_consumption`, `gas_consumption_kwh`, `gross_financial_wealth`, `hand_rolling_tobacco_grams_per_week`, `health_consumption`, `heated_tobacco_grams_per_week`, `horse_and_dog_pool_betting_net_losses`, `household_furnishings_consumption`, `household_owns_tv`, `housing_service_charges`, `housing_water_and_electricity_consumption`, `in_original_frs`, `in_rural_fuel_duty_relief_area`, `is_shared_accommodation`, `land_based_casino_net_losses`, `land_based_fixed_odds_betting_net_losses`, `liquid_fuel_consumption`, `local_authority`, `lpg_kg`, `machine_games_higher_rate_net_takings`, `machine_games_lower_rate_net_takings`, `machine_games_standard_rate_net_takings`, `main_residence_value`, `main_residential_property_purchased_is_first_home`, `main_residential_property_purchased_is_in_uk`, `main_residential_property_purchased_with_mortgage`, `miscellaneous_consumption`, `mortgage_debt`, `national_lottery_ticket_spending`, `natural_gas_kg`, `net_financial_wealth`, `ni_epg_full_rate_applies`, `non_residential_property_purchased`, `non_residential_property_secured_debt`, `non_residential_property_value`, `non_residential_rent`, `num_bedrooms`, `num_vehicles`, `other_fermented_draught_share`, `other_fermented_litres`, `other_residential_property_secured_debt`, `other_residential_property_value`, `other_spread_betting_net_losses`, `other_tobacco_grams_per_week`, `owned_land`, `petrol_spending`, `pool_betting_net_receipts`, `private_pension_wealth`, `property_purchased`, `rail_usage`, `recreation_consumption`, `region`, `remote_gaming_net_losses`, `remote_other_betting_net_losses`, `remote_uk_horseracing_betting_net_losses`, `restaurants_and_hotels_consumption`, `savings`, `solid_fuel_consumption`, `sparkling_cider_draught_share`, `sparkling_cider_litres`, `spi_imputed`, `spirits_draught_share`, `spirits_litres`, `stocks_and_shares_isa`, `structural_insurance_payments`, `transport_consumption`, `uc_migrated`, `unit_and_investment_trusts`, `uses_energy_prepayment_meter`, `water_and_sewerage_charges`, `wine_draught_share`, `wine_litres`, `would_evade_tv_licence_fee`

### person (180)
### person (181)

`a_and_e_visits`, `aa_category`, `access_fund`, `admitted_patient_visits`, `adult_dependants_grant_has_other_adult_dependant`, `adult_dependants_grant_other_adult_income`, `adult_dependants_grant_receives_postgraduate_loan`, `adult_ema`, `afcs_reported`, `age_started_or_accepted_current_education_or_training`, `armed_forces_independence_payment`, `attends_private_school_random_draw`, `base_net_income`, `blind_persons_allowance`, `bsp_reported`, `bursary_fund_16_to_19_in_care_or_care_leaver`, `bursary_fund_16_to_19_participation_costs`, `bursary_fund_16_to_19_self_supporting`, `bus_in_london_trips`, `bus_pass_eligible`, `capital_allowances`, `capital_gains_badr`, `capital_gains_carried_interest`, `capital_gains_residential_property`, `car_co2_emissions`, `car_engine_size`, `car_first_registration_date`, `car_fuel_type`, `car_is_ved_exempt`, `car_list_price`, `care_hours`, `carers_allowance_reported`, `charitable_investment_gifts`, `child_benefit_reported`, `child_ema`, `child_limit_adoption_exception`, `child_limit_continuation_exception`, `child_limit_multiple_birth_exception`, `child_limit_non_consensual_conception_exception`, `child_limit_non_parental_caring_exception`, `child_tax_credit_reported`, `childcare_expenses`, `childcare_grant_child_has_special_educational_needs`, `childcare_grant_provider_is_nanny`, `childcare_grant_receives_nhs_childcare_support`, `childcare_grant_receives_postgraduate_loan`, `council_tax_benefit_reported`, `covenanted_payments`, `deficiency_relief`, `defined_benefit_pension_share`, `disabled_students_allowance_eligible_expenses`, `disabled_students_allowance_receives_equivalent_support`, `dla_m_category`, `dla_sc_category`, `early_years_school_start_deferred`, `education_grants`, `employee_pension_contributions_reported`, `employer_pension_contributions`, `employment_expenses`, `employment_sector`, `employment_status`, `esa_contrib_reported`, `esa_income_reported`, `free_school_fruit_veg`, `free_school_meals`, `free_school_milk`, `gift_aid`, `healthy_start_vouchers`, `housing_benefit_reported`, `iidb_reported`, `in_FE`, `incapacity_benefit_reported`, `income_support_reported`, `individual_savings_account_dividend_income`, `is_about_to_start_paid_work`, `is_apprentice`, `is_before_universal_credit_qualifying_young_person_terminal_date`, `is_blind`, `is_engaged_in_owned_company_trade`, `is_full_year_category_a_director`, `is_in_approved_training`, `is_looked_after_by_local_authority`, `is_newly_self_employed`, `jsa_contrib_reported`, `jsa_income_reported`, `lifetime_isa_balance`, `lifetime_isa_first_time_buyer`, `lifetime_isa_months_since_first_payment`, `lifetime_isa_payments`, `lifetime_isa_terminally_ill`, `lifetime_isa_withdrawals`, `lifetime_isa_withdrawals_towards_first_home`, `local_bus_uncapped_single_fare`, `loss_relief`, `lump_sum_income`, `maintenance_expenses`, `maintenance_income`, `married_couples_allowance`, `maternity_allowance_reported`, `max_free_entitlement_hours_used`, `miscellaneous_income`, `nhs_a_and_e_spending`, `nhs_admitted_patient_spending`, `nhs_outpatient_spending`, `ni_class_3`, `non_cash_isa_cash_interest`, `other_deductions`, `other_investment_income`, `other_local_bus_trips`, `other_tax_credits`, `outpatient_visits`, `owned_company_capital`, `owned_company_carries_on_property_business`, `owned_company_carries_on_trade`, `owned_company_holding_value`, `owned_company_income_share`, `owned_company_intermediary_earnings_chapter`, `owned_company_intermediary_earnings_from_main_employment`, `owned_company_is_main_employment`, `owned_company_trade_assets`, `pension_annual_allowance_taxable_lump_sum_death_benefits`, `pension_contributions_via_bonus_sacrifice`, `pension_contributions_via_salary_sacrifice`, `pension_contributions_via_salary_sacrifice_pre_2015`, `pension_credit_reported`, `pension_income`, `person_benunit_role`, `person_household_role`, `personal_pension_contributions`, `pip_dl_points`, `pip_m_points`, `private_transfer_income`, `property_finance_costs`, `property_finance_costs_brought_forward`, `property_rental_income`, `receives_benefits_in_own_right`, `receives_limited_capability_for_work_credits`, `rent_paid_as_boarder`, `rent_paid_as_lodger`, `role`, `salary_sacrifice_returned_to_income`, `scottish_funded_early_learning_childcare_start_date_reached`, `sda_reported`, `self_employment_gross_receipts`, `sic_industry_division`, `spousal_maintenance_income`, `ssmg_reported`, `stands_as_sole_owner_or_partner_of_company`, `statutory_maternity_pay`, `statutory_paternity_pay`, `statutory_sick_pay`, `student_loan_balance`, `student_loan_plan`, `student_loans`, `sublet_income`, `tax_free_childcare_on_adoption_leave`, `tax_free_childcare_on_carers_leave`, `tax_free_childcare_on_qualifying_leave`, `tax_free_childcare_on_shared_parental_leave`, `tax_free_childcare_self_employment_start_up_period`, `tax_free_childcare_spend_routed_share`, `tax_free_childcare_uses_qualifying_provider`, `tax_reported`, `travel_grant_abroad_placement`, `travel_grant_clinical_placement`, `travel_grant_eligible_expenses`, `travel_grant_receives_means_tested_nhs_bursary`, `uc_has_offer_of_paid_work_starting_by_end_of_next_assessment_period`, `uc_is_adopter_in_first_year`, `uc_is_foster_parent_or_new_friend_or_family_carer`, `uc_is_in_pregnancy_or_post_confinement_period`, `uc_is_in_startup_period`, `uc_is_responsible_foster_parent_of_child_under_one`, `uc_is_student_with_no_work_related_requirements`, `uc_is_temporarily_absent_from_claimant_household`, `universal_credit_reported`, `war_widows_pension_reported`, `widowed_parents_allowance_reported`, `winter_fuel_allowance_reported`, `working_tax_credit_reported`
`a_and_e_visits`, `aa_category`, `access_fund`, `admitted_patient_visits`, `adult_dependants_grant_has_other_adult_dependant`, `adult_dependants_grant_other_adult_income`, `adult_dependants_grant_receives_postgraduate_loan`, `adult_ema`, `afcs_reported`, `age_started_or_accepted_current_education_or_training`, `armed_forces_independence_payment`, `attends_private_school_random_draw`, `base_net_income`, `blind_persons_allowance`, `bsp_reported`, `bursary_fund_16_to_19_in_care_or_care_leaver`, `bursary_fund_16_to_19_participation_costs`, `bursary_fund_16_to_19_self_supporting`, `bus_in_london_trips`, `bus_pass_eligible`, `capital_allowances`, `capital_gains_badr`, `capital_gains_carried_interest`, `capital_gains_residential_property`, `car_co2_emissions`, `car_engine_size`, `car_first_registration_date`, `car_fuel_type`, `car_is_ved_exempt`, `car_list_price`, `care_hours`, `carers_allowance_reported`, `charitable_investment_gifts`, `child_benefit_reported`, `child_ema`, `child_limit_adoption_exception`, `child_limit_continuation_exception`, `child_limit_multiple_birth_exception`, `child_limit_non_consensual_conception_exception`, `child_limit_non_parental_caring_exception`, `child_tax_credit_reported`, `childcare_expenses`, `childcare_grant_child_has_special_educational_needs`, `childcare_grant_provider_is_nanny`, `childcare_grant_receives_nhs_childcare_support`, `childcare_grant_receives_postgraduate_loan`, `council_tax_benefit_reported`, `covenanted_payments`, `deficiency_relief`, `defined_benefit_pension_share`, `disabled_students_allowance_eligible_expenses`, `disabled_students_allowance_receives_equivalent_support`, `dla_m_category`, `dla_sc_category`, `early_years_school_start_deferred`, `education_grants`, `employee_pension_contributions_reported`, `employer_pension_contributions`, `employment_expenses`, `employment_sector`, `employment_status`, `esa_contrib_reported`, `esa_income_reported`, `free_school_fruit_veg`, `free_school_meals`, `free_school_milk`, `gift_aid`, `healthy_start_vouchers`, `housing_benefit_reported`, `iidb_reported`, `in_FE`, `incapacity_benefit_reported`, `income_support_reported`, `individual_savings_account_dividend_income`, `is_about_to_start_paid_work`, `is_apprentice`, `is_before_universal_credit_qualifying_young_person_terminal_date`, `is_blind`, `is_engaged_in_owned_company_trade`, `is_full_year_category_a_director`, `is_in_approved_training`, `is_in_first_year_of_apprenticeship`, `is_looked_after_by_local_authority`, `is_newly_self_employed`, `jsa_contrib_reported`, `jsa_income_reported`, `lifetime_isa_balance`, `lifetime_isa_first_time_buyer`, `lifetime_isa_months_since_first_payment`, `lifetime_isa_payments`, `lifetime_isa_terminally_ill`, `lifetime_isa_withdrawals`, `lifetime_isa_withdrawals_towards_first_home`, `local_bus_uncapped_single_fare`, `loss_relief`, `lump_sum_income`, `maintenance_expenses`, `maintenance_income`, `married_couples_allowance`, `maternity_allowance_reported`, `max_free_entitlement_hours_used`, `miscellaneous_income`, `nhs_a_and_e_spending`, `nhs_admitted_patient_spending`, `nhs_outpatient_spending`, `ni_class_3`, `non_cash_isa_cash_interest`, `other_deductions`, `other_investment_income`, `other_local_bus_trips`, `other_tax_credits`, `outpatient_visits`, `owned_company_capital`, `owned_company_carries_on_property_business`, `owned_company_carries_on_trade`, `owned_company_holding_value`, `owned_company_income_share`, `owned_company_intermediary_earnings_chapter`, `owned_company_intermediary_earnings_from_main_employment`, `owned_company_is_main_employment`, `owned_company_trade_assets`, `pension_annual_allowance_taxable_lump_sum_death_benefits`, `pension_contributions_via_bonus_sacrifice`, `pension_contributions_via_salary_sacrifice`, `pension_contributions_via_salary_sacrifice_pre_2015`, `pension_credit_reported`, `pension_income`, `person_benunit_role`, `person_household_role`, `personal_pension_contributions`, `pip_dl_points`, `pip_m_points`, `private_transfer_income`, `property_finance_costs`, `property_finance_costs_brought_forward`, `property_rental_income`, `receives_benefits_in_own_right`, `receives_limited_capability_for_work_credits`, `rent_paid_as_boarder`, `rent_paid_as_lodger`, `role`, `salary_sacrifice_returned_to_income`, `scottish_funded_early_learning_childcare_start_date_reached`, `sda_reported`, `self_employment_gross_receipts`, `sic_industry_division`, `spousal_maintenance_income`, `ssmg_reported`, `stands_as_sole_owner_or_partner_of_company`, `statutory_maternity_pay`, `statutory_paternity_pay`, `statutory_sick_pay`, `student_loan_balance`, `student_loan_plan`, `student_loans`, `sublet_income`, `tax_free_childcare_on_adoption_leave`, `tax_free_childcare_on_carers_leave`, `tax_free_childcare_on_qualifying_leave`, `tax_free_childcare_on_shared_parental_leave`, `tax_free_childcare_self_employment_start_up_period`, `tax_free_childcare_spend_routed_share`, `tax_free_childcare_uses_qualifying_provider`, `tax_reported`, `travel_grant_abroad_placement`, `travel_grant_clinical_placement`, `travel_grant_eligible_expenses`, `travel_grant_receives_means_tested_nhs_bursary`, `uc_has_offer_of_paid_work_starting_by_end_of_next_assessment_period`, `uc_is_adopter_in_first_year`, `uc_is_foster_parent_or_new_friend_or_family_carer`, `uc_is_in_pregnancy_or_post_confinement_period`, `uc_is_in_startup_period`, `uc_is_responsible_foster_parent_of_child_under_one`, `uc_is_student_with_no_work_related_requirements`, `uc_is_temporarily_absent_from_claimant_household`, `universal_credit_reported`, `war_widows_pension_reported`, `widowed_parents_allowance_reported`, `winter_fuel_allowance_reported`, `working_tax_credit_reported`
2 changes: 1 addition & 1 deletion packages/microcosm-build/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ us = [
# The UK extra adds the rules engine for local metric generation from a
# Microcosm UK H5. Target tables remain explicit inputs, and the base package
# still does not import policyengine-uk at import time.
uk = ["policyengine-uk>=2.162.3", "microcosm-data>=0.1,<0.2", "h5py>=3", "tables>=3", "openpyxl>=3.1"]
uk = ["policyengine-uk>=2.162.8", "microcosm-data>=0.1,<0.2", "h5py>=3", "tables>=3", "openpyxl>=3.1"]

[project.scripts]
microcosm-build-uk = "microcosm.build.uk_runtime.full_build_cli:main"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"schema_version": 1,
"engine": {
"package": "policyengine-uk",
"version": "2.162.3"
"version": "2.162.8"
},
"written_by": "tools/pin_uk_bonus_sacrifice_anchor.py",
"source": {
Expand Down
Loading
Loading