Add national council tax reduction core#1769
Merged
Merged
Conversation
MaxGhenis
added a commit
to TheAxiomFoundation/axiom-oracles
that referenced
this pull request
Jul 6, 2026
…14/25) (#192) * docs: refresh CTR coverage-matrix row for PE-UK 2.89.2 council_tax_reduction gained a formula in PolicyEngine-UK 2.89.2 (PolicyEngine/policyengine-uk#1769 national core + #1771 Kingston, both merged), so matrix row 29 and note 6 — which said the variable "does NOT exist in PE-UK" and the surface was "PE-blocked" — were stale. Update them to the resolved state: the England pension-age path (gov.local_authorities.england.council_tax_reduction.pensioners: max-support 1, capital limit 16000, withdrawal 0.20) is parameter-identical to SI 2012/2885 and matches the rulespec England pension-age award penny-for-penny on a synthetic grid (verified, PE-UK 2.89.2). Record that CTR does not inherit the #1794 Housing Benefit earnings-disregard defect (its applicable-income path applies no earnings disregard) and note the uk-pe universe pins 2.89.2 where the running EFRS suites pin 2.88.56. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * oracles: add uk-council-tax-reduction comparison (rulespec vs PE-UK 2.89.2) Adds a case-grid comparison of the encoded England pension-age Council Tax Reduction scheme (rulespec-uk uk/policies/govuk/council-tax-reduction.yaml, SI 2012/2885 Schedule 1) against PolicyEngine-UK's council_tax_reduction (present from 2.89.2). council_tax liability is a supplied input on both engines, so the schemes are commensurable. scripts/generate_uk_council_tax_reduction.py runs a synthetic England pensioner-household grid through PolicyEngine-UK 2.89.2 live and the rulespec scheme through the axiom rules engine, bridging PE's own applicable amount / applicable income / non-dependant deductions / council_tax liability / savings into the rulespec supplied inputs (the uk-pension-credit bridge pattern), and writes a v2 report. comparisons/uk-council-tax-reduction.yaml registers it; the uk-council-tax-reduction-grid runner delegates to the generator and reuses the committed dashboard report on a runner without the PE-UK/engine stack (mirroring state-income-tax-liability-grid). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * conformance: cover council_tax_reduction on uk-pe (13/25 -> 14/25) The committed uk-council-tax-reduction report matches all 11 pensioner case-grid cases to the penny (the 20% taper interior, the 16000 capital screen, single and couple), residuals sub-0.001 from PolicyEngine float32, inside the 0.01 tolerance. Bind uk-pe:council_tax_reduction to the uk-council-tax-reduction suite so the scoreboard scores it covered, moving PolicyEngine-UK conformance coverage from 13/25 (52%) to 14/25 (56%) and lifting the ratchet floor to 14. Regenerate the scoreboard, per-policy detail, burn-down, freshness, and affected-map. Widen the covered-suite allowlist test to admit the case-grid CTR suite alongside the two EFRS suites. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
council_tax_reduction, support detection, simulated benunit CTR, and net council tax flooringThis is a focused extraction from the larger draft CTR framework branch (#1534), leaving local working-age authority schemes for later auditable batches.
Tests
uv run policyengine-core test policyengine_uk/tests/policy/baseline/gov/local_authorities/council_tax_reduction/council_tax_reduction.yaml policyengine_uk/tests/policy/baseline/consumption/council_tax_less_benefit.yaml -c policyengine_ukuv run policyengine-core test policyengine_uk/tests/policy -c policyengine_ukuv run --with pytest --with pytest-cov python -m pytest policyengine_uk/tests/ --cov=policyengine_uk --cov-report=xml --maxfail=1 -vuv run ruff check policyengine_uk/variables/gov/local_authorities/council_tax_reduction policyengine_uk/variables/gov/dwp/council_tax_benefit.py policyengine_uk/variables/household/consumption/council_tax_less_benefit.py policyengine_uk/variables/input/consumption/property/council_tax.pygit diff --check