Conversation
TCA 2002 s.7(2) lifts the tax credit income test while the claimant or either joint claimant is entitled to a prescribed benefit, and SI 2002/2008 reg 4(1)(d) prescribes State Pension Credit (from 26 November 2003). The model passported Income Support, income-based JSA and income-related ESA but not Pension Credit. Pension Credit counts working tax credit as income (SPCA 2002 s.15(1)(b)), so reading Pension Credit from the income test is circular. The passport is taken from Pension Credit calculated in a core branch in which the income test is lifted: it holds when Pension Credit stays payable with the passported award counted, and the simulation's own award and Pension Credit then equal the branch's. In years with no tax credit awards Pension Credit is read directly; wtc_entitlement returns before the income test in those years, so there is no cycle. Reg 4(1)(d) covers either credit (SPCA 2002 s.1(3)). The reg 4(1)(a) exception (IS Regs 1987 reg 6(2)-(3), the lone parent run-on) is spent from 25 October 2004, and reg 4(2) (the WTC four-week run-on) has no period in a whole-year award; both are documented, not modelled. Adds gov.dwp.tax_credits.means_test.pension_credit_passport, YAML tests hand-computed from the law, and Hypothesis properties (differential against a passported simulation, consistency, no-harm, request-order independence, and the no-award years). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Random draws passport through Pension Credit often (55 of 236 families in a derandomized sample) but never raise CTC and hit the third row once. The YAML households now run as explicit examples of each property, and a test checks that they reach every case: WTC and CTC raised by the passport, the third row, and a mixed-age couple. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Review of #2034 (Subfleet job 20261002-020316-tc-pc-passport-review-r1c): - The two-year-old childcare criteria read tax_credits_applicable_income, which the passport zeroes, so a savings-credit-only family with CTC passed the £16,190 "annual gross income" limit (SI 2014/2147 reg 1(2)) whatever its income. Split out tax_credits_current_year_income (TCA 2002 s.7(4); SI 2002/2006 reg 3); the applicable income is that or nil, and both childcare criteria read the gross figure. - YAML case 6 relied on is_WTC_eligible pooling age and hours across the couple (#2042): the older partner now does the work, with the same figures. - Read the branch's Pension Credit through its population, so a microsimulation returns an unweighted array, and take a branch name in use by no other branch. - Docstring: the rule's premise (Pension Credit never rises with WTC in law), the model-only case its savings credit creates (#1954), and the nil-guarantee boundary. Comment covers reg 4(1)(b). - Tests: a childcare case, a 2018-19 case, a Microsimulation test, a household-net-income-first request order, a childcare property, and income-related ESA drawn only below State Pension age. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The targeted childcare tax credit criteria now read tax_credits_current_year_income (the "annual gross income" of SI 2014/2147 reg 1(2)), so their tests enter that instead of the passported tax_credits_applicable_income. Expectations are unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
The case "The passport does not bring a family under the childcare gross income limit" ( #2057 (stacked on this) had copied the same input and now enters 🤖 Generated with Claude Code |
Fixes #2032
Summary
tax_credits_applicable_incomelifted the tax credit income test for Income Support, income-based JSA and income-related ESA, but not for State Pension Credit, which SI 2002/2008 reg 4(1)(d) also prescribes. This PR adds the Pension Credit passport.Working tax credit is Pension Credit income, so Pension Credit and the passport depend on each other. The passport is decided on the Pension Credit payable with the passported award counted, calculated in a core branch.
Stacked on #2027 (
legacy-award-readers-claimant-partner, head200a1cdc4), which switched the other passports to the claimant's and partner's awards. #2027 is stacked on #2013, #2001 and #1896.Law (fetched verbatim from legislation.gov.uk
/data.xml, 2026-10-02)The questions
Any Pension Credit, or only the guarantee credit? Any. Reg 4(1)(d) names "state pension credit within the meaning of" the Act, and s.1(3) makes that a guarantee credit, a savings credit or both. The passport reads
pension_credit(both credits, after take-up), notguarantee_credit. A test covers a couple on the savings credit alone.Entitled, so claimed. There is no entitlement to a benefit without a claim (SSAA 1992 s.1(1), (4)(ab)).
pension_creditapplieswould_claim_pc, so unclaimed Pension Credit gives no passport, asincome_supportdoes for Income Support.Mixed-age couples. A couple claims tax credits jointly, and reg 4 lifts the test if "either of the persons" is entitled to Pension Credit. So the older partner's Pension Credit passports the couple's joint award, including CTC for their children and WTC on the younger partner's work.
is_pension_credit_eligibleapplies s.4(1A) in every year and does not model the art. 4 saving. So the model never gives a mixed-age couple Pension Credit, and so never the passport; a test covers this.pension_credit, a couple who get Pension Credit under Date the mixed-age couple Pension Credit exclusion and model the SI 2019/37 saving #1940 get the passport with no further change.The reg 4(1)(a) exception (IS Regs 1987 reg 6(2)-(3)). No modelling is needed. It excluded Income Support paid only under the 14-day lone parent run-on. Those paragraphs were omitted from 25 October 2004, so no one has been entitled to Income Support "only by virtue of" them since then. That is long before the model's first tax credit year. The model has no Income Support run-on in any case.
Reg 4(2), the WTC four-week run-on. Not modelled. During the reg 7D run-on, which starts when the claimant stops work or drops below the hours condition, the passport does not apply to WTC (CTC stays passported). The model's WTC is a whole-year award on the year's hours, with no run-on period.
working_tax_credit_run_onis a whole-year flag read only by the targeted childcare criteria. Using it to switch the WTC passport off for a whole year would overstate a four-week rule 13-fold. The code comment records this.The dependency cycle, and which state the model picks
Pension Credit counts working tax credit as income (s.15(1)(b)), and the tax credit income test reads Pension Credit (s.7(2)). The law gives no tie-break. Write Wmax for the passported (maximum) WTC award, Wt for the income-tested one, and PC(W) for Pension Credit computed with WTC W. Then:
The rule is: the passport holds when Pension Credit stays payable with the passported award counted.
pension_credit_with_passported_tax_creditscomputes this in a core branch (tax_credits_pension_credit_passport) in whichtax_credits_applicable_incomeis set to 0, and removes the branch afterwards. Where the passport holds, the simulation's own WTC, CTC and Pension Credit equal the branch's. So the model never shows a passport alongside nil Pension Credit. The third row is the only case in which Pension Credit is paid without the passport. It needs WTC, since CTC is not Pension Credit income.Two side effects of the rule:
Years with no awards. From 2025-26,
gov.dwp.tax_credits.activeis false and every tax credit is nil, so the passported and income-tested states coincide.pension_creditis read directly, with no branch. To keep that free of a cycle,wtc_entitlementreturns nil before reading the income test when tax credits are inactive. Its value is unchanged: it was already nil throughtax_credits. A Pension Credit recipient'stax_credits_applicable_incomeis therefore 0 in those years too. That keeps the variable's meaning the same in every year; no amount changes.Cost. The branch is created only in years with awards, so 2025-26 onward runs, which are most runs, pay nothing. See the impact section for the 2024 timing.
Changes
tax_credits_applicable_income: the Pension Credit passport (reg 4(1)(d)), with the reasoning above in a docstring. Comments record why the reg 4(1)(a) exception and reg 4(2) are not modelled.wtc_entitlement: returns before the income test when tax credits are inactive (no change in value).gov.dwp.tax_credits.means_test.pension_credit_passport: false from 6 April 2003, true from 26 November 2003. It records the commencement and lets a reform switch the passport off.Invariants (property-tested, Hypothesis)
For any family of one or two adults aged 40-90 (mixed-age couples included) and up to two children, with earnings, hours, State Pension, private pension, savings, WTC and CTC claims, Pension Credit take-up and income-related ESA:
tax_credits_applicable_incomeentered as 0, pays Pension Credit. Otherwise the applicable income equals the value with the parameter switched off.A unit test runs the passport under tracing and nested inside the marginal tax rate's own branches.
Tests
YAML: 8 cases in
tests/policy/baseline/gov/dwp/tax_credits_pension_credit_passport.yaml, each computed by hand from the law and the 2024-25 (or 2025-26) rates, with the arithmetic in comments:Three intermediate values the model gets wrong for unrelated reasons are entered at their statutory amounts, with comments:
Each pensioner has £300 of savings interest. That makes the model's tax credit income equal the law's, which puts State Pension in step one with the £300 disregard (SI 2002/2006 regs 3, 5(1)(a)).
On the base
200a1cdc4, the three passport cases fail on value and the switched-off case fails because the parameter is new. The four no-passport cases pass on both.Hypothesis:
test_tax_credits_pension_credit_passport_properties.pyhas 3 properties (20 derandomized examples each), the unit test and a coverage test.@examples of every property, andtest_yaml_families_reach_every_casechecks they hit each case.28eb7d2d4; the explicit examples and the coverage test pass on284434ffc.Full suites: PENDING.
Enhanced FRS impact
PENDING: real
Microsimulationruns on a private copy of the Enhanced FRS 2024-25, base200a1cdc4against this branch, 2024-2030.Axiom
axiom: TheAxiomFoundation/rulespec-uk#419 queued
TCA 2002 s.7 and SI 2002/2008 reg 4 are not in the corpus (checked axiom-corpus
origin/main2c86dc9af: TCA s.8 and SI 2002/2008 regs 7 and 9 are, as discovery entries), so the encoder path is blocked. rulespec-uk encodes SPCA 2002 ss.1-3 and SPC Regs reg 15, but s.1 defers Pension Credit entitlement. #419 holds the verbatim law, the required outputs, a pasteablereview_findingand eight companion tests taken from this PR's YAML. It is linked from #416, whose tax credit item now defers to it.Related and follow-ups
pension_credit.🤖 Generated with Claude Code