Repository navigation
Limit Housing Benefit childcare to qualifying charges and earnings residuals - #2229
Conversation
89368dc to
a66b990
Compare
191139b to
d84c026
Compare
|
Parent-gated build hand-off. Head remains Tests for this child: 0 executed in this job; no claim is made about the current head's CI. Preserve Anthony's corrected disabled-worker earnings-disregard regression (£1,929.20) when updating the base. Draft status unchanged; no merge/readiness/closure action. Once #2219 lands, the pending commands are: git fetch origin main fix-hb-qualified-childcare
git switch fix-hb-qualified-childcare # create tracking branch if absent
git merge --no-ff origin/main
# Resolve, run focused foreground tests with -n 2 after load1 <=110 and
# os.statvfs available disk >=55 GB decimal; commit fixes and push once.
gh api -X PATCH repos/PolicyEngine/policyengine-uk/pulls/2229 -f base=mainOpen items: parent landing; merge/test/push/body refresh as needed; retarget; hub independent review. #2234 remains gated on this PR's landing. Corrected the published PR body: current head uses aggregate childcare_expenses and the age-based child count, adds no qualifying-charge input, and defers detailed qualifying-care rules to #2236. The old body claimed the removed input. No code or historical test result was changed; current-head verification remains open. |
There was a problem hiding this comment.
Reviewed at c5e5f88471395f09d1ecd0770cbaee2c938c7807. The changed childcare calculation and source checks found no new defect, but the stack’s targeted validation needs refreshing before landing.
Of 107 focused cases, 106 pass. The unchanged inherited disabled-worker case expects £1149.20 instead of £1929.20 at both base and head; the latest #2225 already corrects it. Incorporate that parent update and obtain a green targeted run.
The new residual ordering matches the reviewed GB/NI provisions and DWP guidance. An independent final-award case caps £4160 reported childcare spending at £3620.05 remaining earnings, reducing HB from £6429.80 to £6078.83 versus the old-cap control, exactly 65% of the disallowed £539.95. Provider/work qualification and paid-care-child counting remain deferred to #2236, as documented; this review does not certify those unchanged approximations.
|
UK hub: #2219 merged at 15:47Z (8a5a7d3), so I retargeted this PR from
The build pushes a merge commit, never a force-push. The hub will update the body after an independent review. |
Aggregate impact on certified data: passBase Checks: 0 broken by this change, 1 failing on both sides, 0 fixed. Moves flagged for review: 0 (thresholds in Notes
Moves flagged for reviewNone. Spending by benefit and service
Caseloads
Standard reform costings (change in gov_balance)
Standard reforms: change in each reform's target
Household net income by decileNo household's net income changes in any year. No change in any year: receipts by tax head; government balance, each component counted once; model totals; household income totals; population; poverty rates; people in poverty; inequality; mean household net income in each side's own deciles. Checks failing on both base and head (1)
Counted-once checkEach of 91 components was raised by £1 per unit in 2026-27, and every head of its totals was read household by household: its own head must rise by exactly £1, no other tax head may move, no other benefit may rise, and the model's own total must move by what its heads moved. A head that breaks a rule is measured again twice: with every other head held at its baseline value, and with every other head held at its value after the first £1 while the component rises again. It fails where either still shows the response. 0 failed; 0 were skipped.
Provenance
Dataset: Receipts by tax head: head levels
Spending by benefit and service: head levels
Caseloads: head levels
Government balance, each component counted once: head levels
Model totals: head levels
Household income totals: head levels
Population: head levels
Poverty rates: head levels
People in poverty: head levels
Inequality: head levels
Mean household net income in each side's own deciles: head levels
Standard reform costings (change in gov_balance): head levels
Standard reforms: change in each reform's target: head levels
|
… the no-cycle conditions Review r1 (APPROVE WITH NITS at 28f85f2), both P3s: - Restore policyengine_uk.Simulation in the existing calculate() helper of test_housing_benefit_earnings_disregard_properties.py, as on main. The core-constructor swap only beat a loaded host's local time cap and removed UK-wrapper coverage; it can be proposed separately. - The childcare limit's no-cycle note now says when earnings are fixed (no baseline, or zero labour supply income and substitution elasticities, the defaults) and that it does not cover reforms turning those responses on. Co-Authored-By: Claude Opus 5.5 <[email protected]>
|
UK hub: landing this at a1bcf93. @juaristi22's review (24 Oct, at c5e5f88). Its one action was to bring in #2225's corrected disabled-worker case and get a green targeted run.
Since then:
The body is updated. The hub marks the PR ready and queues it once CI is green at a1bcf93. #2234 then merges main. 🤖 Generated with Claude Code |
|
UK hub: queued at a1bcf93 once 🤖 Generated with Claude Code |
Fixes #2228
Limit the Housing Benefit childcare deduction to two amounts: the capped aggregate childcare charges, and the earnings residual plus Working Tax Credit and Child Tax Credit.
Reproducer:
policyengine_uk/tests/policy/baseline/finance/benefit/family/housing_benefit/applicable_income/housing_benefit_applicable_income_childcare_element.yaml::Low earnings after standard disregardWhat changes
max(0, net earnings − applied standard − accommodation) + WTC + CTC. Pension, maintenance and other unrelated income can't meet childcare charges.housing_benefit_applied_standard_earnings_disregard. The retained helperhb_standard_earnings_disregardreturns that variable. So the general, savings-credit and childcare paths share one treatment of permitted work and lone parents. The helper andhb_childcare_earnings_limit(..., accommodation=)keep their signatures for the stacked Apply Housing Benefit accommodation disregards from their start date #2234.housing_benefit_net_earnings.Invariants (Hypothesis properties)
Validation
Simulationconstructor, as on main;Limits
Simplifications kept: this retains aggregate
childcare_expenses, the age-based relevant-child count, and an annual approximation with constant household circumstances.Deferred to Implement deferred Housing Benefit qualifying-childcare conditions #2236:
The age-based count can overstate the cap when only one of several eligible children has paid care.
Tax-credit allocation (found in review, pre-existing). SI 2006/213 Schedule 5 paragraph 56 can reserve part of WTC for its own disregard before childcare. The applicable-income path doesn't model that.
axiom: TheAxiomFoundation/rulespec-uk#375 queued
The childcare charges extension to rulespec-uk#375, with the law, required outputs and companion tests: TheAxiomFoundation/rulespec-uk#375 (comment) (UK hub, 24 Oct).
🤖 Generated with Claude Code