Repository navigation
Screen ESA and JSA reports for each claim - #2679
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
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
|
|
Round 1 at Verdict: the approach is sound and matches the law. There are no musts and three shoulds, mostly cleanup. It is still a draft, so this is a comment, not an approval. The law supports separate claims. Welfare Reform Act 2007 Sch 1 para 6(1)(d) and 6(2) join only the other member of the couple to a claim, and ESA Regs 2008 reg 118 and JSA Regs 1996 reg 116 apply tariff income per claimant. So a non-dependent adult's report is their own claim, with their own work test and their own tariff. The tariff arithmetic in the tests and docs checks out: £1,000 above £6,000 is 4 steps, £208 a year; £4,000 above is 16 steps, £832. Findings
Not changed by this PR, for the record. Contributory ESA and contributory JSA pass the reported amounts straight through ( Aggregate impact. The CI report at this head (run 40290663254, head_sha What I ran
What I did not read or run
🤖 Generated with Claude Code |
|
Addressed the three shoulds and the copied JSA wording in 9a5464b. The HB cap now passes One added HB-consumer regression fails with the old callback and passes with the repair, using the same assertions. Scoped Ruff and whitespace checks passed. The shared-screen refactor, capital-proxy convention and contributory duration limits remain separate from this correction. |
|
Round 2 at Verdict: all three shoulds and the JSA wording nit are fixed, and I have no new findings. CI is green at this head. Not approving because the PR is still a draft. Once it is ready, I have nothing blocking. Round 1 findings
What I ranIn a fresh worktree at
Not run: the full test suite or any microsimulation. 🤖 Generated with Claude Code |
vahid-ahmadi
left a comment
There was a problem hiding this comment.
Approving at 9a5464b; see the round 2 comment above. All 19 checks green. 🤖 Generated with Claude Code
Fixes #2263
Screen income-related Employment and Support Allowance (ESA) and income-based Jobseeker’s Allowance (JSA) reports separately for the claimant and partner, and for each reporting person outside that couple. A failed couple claim no longer removes another member’s screened award, and a successful couple claim no longer admits a working outside member’s report. Apply tariff income to each separate claim.
Use the same calculation when attributing an award to the claimant and partner, including the benefit-cap readers. The Housing Benefit reader now passes the ESA callback that accepts unsummed reports and an optional member mask. Preserve explicit award inputs, zero values, reform overrides and the existing value-based attribution convention. The model continues to use benefit-unit capital as a proxy for these separate claims; this change does not introduce observed personal capital or claim histories.
The 16–19 bursary receipt helper reads screened income-related ESA status or the existing contributory ESA variable. It retains explicit helper inputs and the Universal Credit report path. This change does not alter the bursary age rules or assess a new contributory entitlement.
Validation: the initial implementation passed 160 focused nodes across six commands. The callback repair separately passed three Python nodes and 116 benefit-cap YAML cases. Its executions used working files before final formatting; the commit preserves their Python ASTs. The later tariff-fixture correction separately passed three YAML cases across two commands on working files preserved by
b584be53. Independent review ofb584be53is complete with no open findings.The later review follow-up restores pinpoint citations and spacing in the eligibility documentation. One new callback-contract node failed with the stale Housing Benefit callback and passed with the corrected callback, in separate executions over
b584be53and the corresponding working-file overlays. Subsequent Ruff formatting preserved the four modified Python ASTs. Earlier test batches were not rerun. Independent incremental review of9a5464b7is COMPLETE / APPROVE with no open findings or material gaps.Reproducer: policyengine_uk/tests/test_reported_legacy_award_screening.py::test_hb_specified_benefit_reader_honours_report_callback_contract
axiom: needed