Repository navigation
Keep UC advance repayments fixed under allowance reforms - #2574
juaristi22 wants to merge 2 commits into
Conversation
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
Government balance, each component counted once
Model totals
Household income totals
Inequality
Mean household net income in each side's own deciles
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; population; poverty rates; people in poverty. Checks failing on both base and head (1)
Counted-once checkEach of 84 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
|
|
UK hub independent review (GPT-6.1 Sol) at
As with #2573, and at the coordinator's request so nobody waits, the hub is opening this fix as a separate PR stacked on your branch; it won't push to yours. @juaristi22, cherry-pick it if you'd rather fold it in. Both land together once you mark this ready or say the hub may. |
|
UC advance missingness fix is pushed as draft #2581, stacked on #2574's
Workspace-local |
|
Focused validation of the existing #2581 repair is complete at The single serial run covered all seven new population cases and the Hypothesis peer-independence property, both deduction YAML files, Execution used an existing Python 3.13.14 / policyengine-core 3.33.2 / NumPy 2.5.4 environment, with imports verified against the exact detached checkout. Core's actual This supplies the missing focused execution evidence for the parent repair. The hub's independent final-head review remains pending. #2574 remains draft; the repair still needs adoption and validation of the resulting upstream head before readiness and Vahid's review request. |
|
UK hub: the stack is approved. The independent review (GPT-6.1 Sol) of this PR with the fix #2581 approves at @juaristi22: as with #2580, merge #2581 into this branch (it fast-forwards), and mark this ready. Or tell the hub it may, and it'll do both and land this through the merge queue. |
|
Can you link the full independent review report and result JSON for |
|
Round 1 at Verdict: the approach is right and baseline is unchanged, but this head still has the hub's mixed-population bug; fold in #2581 before marking ready. Comment only, as it is a draft. Findings
Law
Current with main: yes. The branch is 765 commits behind What I ran (fresh worktree, this head merged with main
Not run or read: no full microsimulation or aggregate run (I relied on the CI aggregate report); #2581's diff only as far as its description and the hub's notes; the documentation build; the full YAML and Python suites. 🤖 Generated with Claude Code |
Refs #2410
Advance repayment demand currently rises with the Universal Credit standard allowance. For a single claimant aged 30 in 2025, a legacy 10% advance represents £40.014/month at the unreformed £400.14 allowance. Raising the allowance to £440 makes the old demand £44. This change keeps demand at £40.014, subject to the existing cap and available award.
uc_advance_repayment_amountis intended to accept known annual cash repayments, including explicit zero; the current draft has the mixed-unit limitation described below. Its fallback retains the existing type-share estimate and uses the same year's unreformed allowance. The existing deduction-rate input, abolition switches, cap, penny floor and protected-floor allocation retain their behavior. SI 2013/383 reg. 10 provides for cash advance recovery. Recovery can still rise when a higher allowance releases a binding cap.This fixes allowance reform responses within an annual cross-section. Cohort repayments across years, family-status changes, maintenance priority and coarse non-advance estimates remain unresolved under #2410; no maintenance or last-resort interface is added.
Validation:
41daefdd1671b029b8c2c650d30787f586cdd69f, resolving its C1, C2 and A1 findings. That result predates the hub's mixed-unit finding and is not a current no-open-findings assessment.41daefdd1671b029b8c2c650d30787f586cdd69f. Supplying a cash repayment, including zero, for one benefit unit can suppress the fallback for other unsupplied units. Hub PR Preserve missing UC advance repayments in mixed populations #2581 at52201202239dfb73ddb5224ceff0753cdc2e4787contains the proposed repair and has not been adopted here.52201202239dfb73ddb5224ceff0753cdc2e4787(81 Python items and 18 YAML cases). Max's 23 October comment6357230112 separately attests approval at that stacked head. These are distinct from the full canonical report, result JSON and workflow provenance, which are still awaited following the once-posted packet request.Reproducer: policyengine_uk/tests/policy/baseline/finance/benefit/family/universal_credit/uc_fixed_deductions.yaml::A legacy advance rate uses the same year's unreformed allowance
axiom: TheAxiomFoundation/rulespec-uk#486 queued (cash advance recovery; signed encoder blocked pending separate per-run approval)