Clarify post-CTR council tax semantics#1657
Conversation
|
Closing as superseded (2026-07-04 worktree/PR sweep). Evidence: PR #1769 "Add national council tax reduction core" (merged to main 2026-06-07, commit 8279df5). #1769's own body states it is "a focused extraction from the larger draft CTR framework branch (#1534)" — i.e., the same author bypassed the #1534→#1657 stack and shipped the underlying goal directly to main. Verified by diff: main's policyengine_uk/variables/household/consumption/council_tax_less_benefit.py already has the exact label #1657 introduces ("Council Tax after Council Tax Reduction") and the same max_(0, ...) zero-floor formula #1657 adds a regression test for, but backed by a real working council_tax_reduction computation rather than a stub. Main's council_tax.py has equivalent clarified documentation. #1657's own docs/council_tax_ctr_pipeline.md (its proposed draft PR sequence) d The head branch and a rescue of its worktree state are preserved locally and in git bundles under ~/.claude/backups/worktree-sweep-20260704/. Reopen if this is wrong. |
Summary
This is the first contingent post-CTR pipeline PR. It is intentionally scoped to semantics and tests so it can sit behind the UK-wide CTR implementation without changing production net-income behavior.
Changes:
council_taxis the dataset-supplied gross annual Council Tax liability, not a value recomputed from local authority schedules.council_tax_less_benefitas Council Tax after Council Tax Reduction and makes the zero floor explicit.docs/council_tax_ctr_pipeline.mdwith the proposed draft PR sequence for structural CT and data-pipeline calibration work.Dependency
Blocked on #1534 completing UK-wide CTR coverage. Until then, downstream changes should remain compare-only and should not switch household net income or production calibration outputs onto modelled CTR.
Validation
uv run policyengine-core test policyengine_uk/tests/policy/baseline/household/consumption/council_tax_less_benefit.yaml -c policyengine_ukNote: running the global
policyengine-coredirectly failed because it used a Python environment where this checkout was not importable; the repo environment command above passed.