Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
The reviewed incumbent-unresolvable register (`uk/incumbent_unresolvable_measures.json`) signs `person.trading_allowance_full_relief` (approved by juaristi22 on 2026-11-10, expiring 2027-02-10). The pinned enhanced FRS leaves the trading allowance claim status at the engine's UNKNOWN and carries no full-relief group (microcosm#1439), so the 5 HMRC SPI rows that read the carrier refused the national rule-1 evaluation (microcosm#578, microcosm#823) of a candidate built after microcosm#1439. Those rows are now pruned from both arms of the evaluation, as the other unresolvable families are; they stay bound in the national solve.
1 change: 1 addition & 0 deletions changelog.d/uk-policyengine-uk-2-177-7.changed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
The UK lock moves from policyengine-uk 2.174.1 to 2.177.7 (microcosm#1095), the newest release, and the UK side's policyengine-core from 3.33.3 to 3.34.10, since policyengine-uk requires 3.34.9 or later from 2.177.4; the US side stays on 3.32.5. Three new inputs stay at their defaults and are signed in `UK_ENGINE_DEFAULT_INPUTS`, each with the error it can make: `legacy_prescribed_accommodation_capital_exception` (2.174.8) and `esa_income_appointee_saving` (2.175.3) at false, and `cares_for_severely_disabled_person` (2.177.3) at true, which moves no figure. `is_before_universal_credit_qualifying_young_person_terminal_date` now has a formula from the date of birth (2.176.1); `frs_education` still writes it, and Universal Credit reads it only for a 19-year-old alongside the education condition, so the result is the engine's own. What the build's engine reads return changes at 2024 and 2025: Council Tax Reduction for pensioners' children, Scotland's and Wales's working-age schemes and non-dependant deductions (2.175.5, 2.175.8, 2.176.2 and 2.177.2); rent-a-room relief and the board-and-lodging disregards on the boarders' and lodgers' rent the build writes (2.176.0); Universal Credit's LHA bedrooms, its renter exemption and a benefit cap that counts no Housing Benefit (2.176.2); VAT's survey coverage, from 0.67 to 0.69 (2.177.0); Marriage Allowance as the recipient's tax reduction and Scottish taxpayers' tax bands (2.177.2); no Plan 5 repayment before 6 April 2026 (2.177.3); no income-related ESA at pensionable age or beside Pension Credit (2.177.5); the legacy enhanced disability premium for enhanced PIP daily living and armed forces independence payment, so the `is_enhanced_disabled_for_benefits` the build stores now reaches only Kingston upon Thames's working-age Council Tax Reduction and two deprecated counts (2.177.6); and the allowances and reliefs set against income in the way that gives the least tax (2.177.7). The build keeps the FRS sub-letting rent in `property_income`, and `obr.vat` stays held, until their own changes (microcosm#1095). The tax-band measure test now asserts HMRC's classification of a Scottish taxpayer's savings and dividends, which 2.177.2 adopts, and the frozen eFRS candidate receipt measures the terminal-date column against its new default. No economic pin moves: the vendored uprating pins and the bonus-sacrifice anchor change only their version stamps, and the CGT projection path keeps its values. The concept coverage (376 to 378 inputs), the texts that describe the engine, the take-up stage's note on the education condition, the cited versions, the coverage manifest, the H2 fixture and `APPROVED_UV_LOCK_SHA256` follow.
14 changes: 7 additions & 7 deletions docs/concept-coverage/policyengine-uk.md

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions docs/uk-isa-subscriptions-1415.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ nothing in the spine reads its outputs.
The `was_lisa` stage also anchors Lifetime ISA holders to HMRC's payers (below,
and [the LISA notes](uk-lisa-1003.md)).

The pinned policyengine-uk 2.174.1 reads all five:
The pinned policyengine-uk 2.177.7 reads all five:

- `lifetime_isa_payments`, whose 25% bonus is `lifetime_isa_bonus`;
- the subscriptions, against the limits of policyengine-uk#2712
Expand Down Expand Up @@ -193,7 +193,7 @@ HMRC's national totals, so it is a population fact check.
The fields support the subscriptions a limit leaves out: the overall £20,000
limit and a separate cash limit (the £12,000 under-65 setting is a reform in
policyengine-uk), through `isa_subscriptions_above_limit` and
`cash_isa_subscriptions_above_limit`. policyengine-uk 2.174.1 reads neither in
`cash_isa_subscriptions_above_limit`. policyengine-uk 2.177.7 reads neither in
any tax or spending variable, so a limit reform changes those amounts but costs
nothing until the engine models where the excess goes. The subscriptions are
flows the engine does not uprate, so a later year reads 2024-25 amounts. In
Expand Down
2 changes: 1 addition & 1 deletion docs/uk-lisa-1003.md
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,7 @@ financial wealth. LISAs are not inside `savings` (savings accounts),
`cash_isa`, `stocks_and_shares_isa` or `corporate_wealth`. The LISA columns are
a detail of gross financial wealth: they must never be added to it, to
`savings`, or to the ISA columns. The engine's `total_wealth` does not read
`gross_financial_wealth`. On policyengine-uk 2.174.1 the means tests of
`gross_financial_wealth`. On policyengine-uk 2.177.7 the means tests of
Universal Credit, Housing Benefit, Pension Credit, income-based ESA and JSA and
Income Support count a LISA at its surrender value
(`lifetime_isa_countable_capital`: the balance less the withdrawal charge below
Expand Down
2 changes: 1 addition & 1 deletion packages/microcosm-build/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,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.174.1", "microcosm-data>=0.1,<0.2", "h5py>=3", "tables>=3", "openpyxl>=3.1"]
uk = ["policyengine-uk>=2.177.7", "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.174.1"
"version": "2.177.7"
},
"written_by": "tools/pin_uk_bonus_sacrifice_anchor.py",
"source": {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -221,7 +221,7 @@
"housing_water_and_electricity_consumption": 0.999553238545,
"iidb_reported": 0.001597494687,
"income_support_reported": 0.004350394394,
"is_before_universal_credit_qualifying_young_person_terminal_date": 0.000478951899,
"is_before_universal_credit_qualifying_young_person_terminal_date": 0.999521048101,
"is_benunit_head": 0.533965378952,
"is_disabled_for_benefits": 0.070300252871,
"is_enhanced_disabled_for_benefits": 0.034839037216,
Expand Down Expand Up @@ -388,7 +388,7 @@
"housing_water_and_electricity_consumption": 0.999813,
"iidb_reported": 0.004252,
"income_support_reported": 0.002956,
"is_before_universal_credit_qualifying_young_person_terminal_date": 0.000847,
"is_before_universal_credit_qualifying_young_person_terminal_date": 0.999153,
"is_benunit_head": 0.534941,
"is_disabled_for_benefits": 0.070573,
"is_enhanced_disabled_for_benefits": 0.035157,
Expand Down Expand Up @@ -646,13 +646,13 @@
},
"pip_dl_category": {
"reason": "formula-owned in policyengine-uk and derived from persisted components; a persisted copy overrides the formula and is not uprated",
"tracking_note": "microcosm#1095 (P1 of the November event-data plan): policyengine-uk 2.174.1 derives pip_dl_category from pip_dl_points (8 points for the standard rate, 12 for the enhanced) where no category is supplied for the year; the pip_points stage stores the points within the stored award, and the release and calibration boundaries drop the category, which the spine keeps (María's signature of 2026-11-09).",
"tracking_note": "microcosm#1095 (P1 of the November event-data plan): policyengine-uk 2.177.7 derives pip_dl_category from pip_dl_points (8 points for the standard rate, 12 for the enhanced) where no category is supplied for the year; the pip_points stage stores the points within the stored award, and the release and calibration boundaries drop the category, which the spine keeps (María's signature of 2026-11-09).",
"approved_by": "juaristi22",
"approved_on": "2026-11-09"
},
"pip_m_category": {
"reason": "formula-owned in policyengine-uk and derived from persisted components; a persisted copy overrides the formula and is not uprated",
"tracking_note": "microcosm#1095 (P1 of the November event-data plan): policyengine-uk 2.174.1 derives pip_m_category from pip_m_points (8 points for the standard rate, 12 for the enhanced) where no category is supplied for the year; the pip_points stage stores the points within the stored award, and the release and calibration boundaries drop the category, which the spine keeps (María's signature of 2026-11-09).",
"tracking_note": "microcosm#1095 (P1 of the November event-data plan): policyengine-uk 2.177.7 derives pip_m_category from pip_m_points (8 points for the standard rate, 12 for the enhanced) where no category is supplied for the year; the pip_points stage stores the points within the stored award, and the release and calibration boundaries drop the category, which the spine keeps (María's signature of 2026-11-09).",
"approved_by": "juaristi22",
"approved_on": "2026-11-09"
}
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.174.1"
"version": "2.177.7"
},
"basis": "policyengine-uk parameter ratio between 1 January of the fact's opening year and 1 January of the calibration year (the SPI donor rebasing convention)",
"written_by": "tools/pin_uk_uprating_engine_values.py",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,13 @@
"adjudication": "microcosm#823 (rule-1 evaluation on the common surface; microcosm#578)",
"approved_on": "2026-09-22",
"expires_on": "2026-12-22"
},
"person.trading_allowance_full_relief": {
"reason": "Trading allowance claim status (microcosm#1439, the trading_allowance_receipts spine stage): the enhanced FRS leaves the claim status at the engine's UNKNOWN and carries no full-relief group; 5 hmrc_spi rows bind through it: self-employment income amounts and counts by total income band and by self-employment income band, and employment income counts by self-employment income band.",
"approved_by": "juaristi22",
"adjudication": "microcosm#823 (rule-1 evaluation on the common surface; microcosm#578); the SPI rows read the carrier since microcosm#1439, after the incumbent pin.",
"approved_on": "2026-11-10",
"expires_on": "2027-02-10"
}
}
}
Loading
Loading