Skip to content

DO NOT MERGE YET: Add an initial council tax reduction framework#1534

Draft
MaxGhenis wants to merge 72 commits intomainfrom
codex/ctr-framework
Draft

DO NOT MERGE YET: Add an initial council tax reduction framework#1534
MaxGhenis wants to merge 72 commits intomainfrom
codex/ctr-framework

Conversation

@MaxGhenis
Copy link
Copy Markdown
Collaborator

@MaxGhenis MaxGhenis commented Mar 23, 2026

Summary

  • add a jurisdiction-scoped Council Tax Reduction framework and wire simulated CTR into council_tax_benefit, council_tax_less_benefit, and household net income
  • support national Wales and Scotland CTR, English pension-age CTR, and 73 current English working-age billing-authority schemes
  • keep each local scheme in separate authority folders for parameters and variables, matching the jurisdiction-first pattern used elsewhere in PolicyEngine
  • add source-linked parameters, local edge-case YAML tests, coverage metadata, and a work queue for the remaining councils

Current CTR Scheme Coverage

  • 73 current English working-age billing authorities are implemented in this PR
  • current batch additions include Plymouth and Basildon, both from official 2026/27 council sources
  • unsupported English working-age authorities continue to fall back to reported baseline council_tax_benefit values rather than guessed local rules

Source And Modeling Notes

  • sources are primary council material where available: formal S13A scheme PDFs, current council pages, budget/adoption papers, or official no-change papers paired with the carried-forward scheme text
  • variables and parameters are jurisdiction-scoped even when formulas are similar, because councils set distinct schemes and may later move to separate jurisdiction repos
  • known source conflicts are documented in scheme_work_queue.md; for example Plymouth's adopted PDF controls over a conflicting live summary amount

Validation

  • uv run policyengine-core test policyengine_uk/tests/policy/baseline/gov/local_authorities/council_tax_reduction/council_tax_reduction.yaml
    • latest local result: 577 passed in 177.17s
  • uv run ruff check on touched CTR variable/shared files
  • uv run ruff format --check on touched CTR variable/shared files
  • git diff --check
  • import checks for newly added authority variables and parameter trees

Latest Checkpoint

  • pushed Basildon implementation and a follow-up review-fix commit after subagent review
  • Basildon review fixes covered UC childcare deductions, SSP/SMP childcare work treatment, UC capital boundary tests, and the two-or-more-dependants top-band row
  • PR head is mergeable as of this checkpoint; CI is pending on the latest pushed commit

Paused Next Work

  • next likely councils to implement: Southend, Thurrock, Colchester, and Chelmsford
  • Southend has a current official council page plus a formal 2026/27 S13A PDF available, and is the next clean candidate

@MaxGhenis MaxGhenis marked this pull request as draft March 23, 2026 11:16
@MaxGhenis
Copy link
Copy Markdown
Collaborator Author

This draft still looks like real work, but not something to merge in its current form. It is stale, conflicting with current main, and large enough that the right next step is probably to split it into smaller PRs rather than revive this branch directly. A sensible breakdown would be: 1. core CTR variable/plumbing and netting behavior, 2. pensioner/Wales/Scotland baseline support, 3. local-authority-specific overrides and comparison scripts. If no one is planning to actively do that split soon, closing this draft would be cleaner than leaving it to rot.

@MaxGhenis MaxGhenis changed the title Add an initial council tax reduction framework DO NOT MERGE YET: Add an initial council tax reduction framework Apr 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant