Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
263 commits
Select commit Hold shift + click to select a range
724d012
Merge branch 'qyp-terminal-date-19' into qyp-income-support-exclusion
MaxGhenis Oct 11, 2026
1954ebe
Vary the age the course began in the Child Tax Credit leaver grid
MaxGhenis Oct 11, 2026
3876f05
Pin the 1 September birthday in the terminal-date YAML cases
MaxGhenis Oct 11, 2026
70eb1cf
Merge remote-tracking branch 'origin/claimant-not-own-child-or-qyp' i…
MaxGhenis Oct 11, 2026
83ea641
Merge remote-tracking branch 'origin/cb-qyp-school-leaver-routes' int…
MaxGhenis Oct 11, 2026
eeb1d85
Merge remote-tracking branch 'origin/ctc-qyp-school-leaver-routes' in…
MaxGhenis Oct 11, 2026
1a131a9
Merge remote-tracking branch 'origin/qyp-terminal-date-19' into qyp-i…
MaxGhenis Oct 11, 2026
2575e9e
Merge origin/main into cb-qyp-school-leaver-routes
MaxGhenis Oct 11, 2026
d262e0a
Merge origin/main into qyp-terminal-date-19
MaxGhenis Oct 11, 2026
59f5a25
Merge origin/cb-qyp-school-leaver-routes into ctc-qyp-school-leaver-r…
MaxGhenis Oct 11, 2026
20c921a
Merge origin/ctc-qyp-school-leaver-routes into qyp-income-support-exc…
MaxGhenis Oct 11, 2026
0d14bc6
Merge origin/qyp-terminal-date-19 into qyp-income-support-exclusion
MaxGhenis Oct 11, 2026
061e087
Bar remunerative work only for a young person who has ceased full-tim…
MaxGhenis Oct 12, 2026
ba3ddf8
Default the terminal-date variables to true, the formula's value unde…
MaxGhenis Oct 12, 2026
39895f7
Treat Income Support as not received once a reform removes it
MaxGhenis Oct 12, 2026
6f6e7de
Keep the YAML cases right under the true default
MaxGhenis Oct 12, 2026
c6f0eb8
Merge origin/means-tests-dependants-income into cb-qyp-school-leaver-…
MaxGhenis Oct 12, 2026
3c61b47
Merge origin/uc-pc-qyp-sixteen-route into cb-qyp-school-leaver-routes
MaxGhenis Oct 12, 2026
e626d3f
Give the working school-leaver in Case 11 earnings, and check the par…
MaxGhenis Oct 12, 2026
33fa9ee
Merge origin/cb-qyp-school-leaver-routes into ctc-qyp-school-leaver-r…
MaxGhenis Oct 12, 2026
884fd5e
Merge origin/uc-pc-qyp-sixteen-route into qyp-terminal-date-19
MaxGhenis Oct 12, 2026
b5cbd2e
Merge origin/main into qyp-terminal-date-19
MaxGhenis Oct 12, 2026
49c549d
Merge origin/ctc-qyp-school-leaver-routes into qyp-income-support-exc…
MaxGhenis Oct 12, 2026
c6c46e6
Merge origin/qyp-terminal-date-19 into qyp-income-support-exclusion
MaxGhenis Oct 12, 2026
3737d29
Count an apprentice still on a course as not having ceased full-time …
MaxGhenis Oct 22, 2026
2932030
Document and test crossed terminal-date overrides
MaxGhenis Oct 22, 2026
91e963d
Merge origin/means-tests-dependants-income into cb-qyp-school-leaver-…
MaxGhenis Oct 22, 2026
6b05191
Merge origin/uc-pc-qyp-sixteen-route into cb-qyp-school-leaver-routes
MaxGhenis Oct 22, 2026
2f0f15a
Let a school-leaver's DLA and AFIP lift the Housing Benefit cap
MaxGhenis Oct 22, 2026
4a88450
Merge origin/cb-qyp-school-leaver-routes into ctc-qyp-school-leaver-r…
MaxGhenis Oct 22, 2026
7ca6af1
Merge origin/uc-pc-qyp-sixteen-route into qyp-terminal-date-19
MaxGhenis Oct 22, 2026
bfb108d
Merge origin/main into qyp-terminal-date-19
MaxGhenis Oct 22, 2026
c98a433
Merge origin/ctc-qyp-school-leaver-routes into qyp-income-support-exc…
MaxGhenis Oct 22, 2026
5be0ed8
Merge origin/qyp-terminal-date-19 into qyp-income-support-exclusion
MaxGhenis Oct 22, 2026
4772258
Drop the comments that said a school leaver is not an HB young person
MaxGhenis Oct 22, 2026
c6e041e
Merge remote-tracking branch 'origin/cb-qyp-school-leaver-routes' int…
MaxGhenis Oct 22, 2026
62e9317
Merge remote-tracking branch 'origin/ctc-qyp-school-leaver-routes' in…
MaxGhenis Oct 22, 2026
c710718
Merge remote-tracking branch 'origin/uc-pc-qyp-sixteen-route' into qy…
MaxGhenis Oct 22, 2026
8a5980c
Count a 16-year-old school leaver in the benefit cap property oracle
MaxGhenis Oct 22, 2026
e53c1eb
Merge remote-tracking branch 'origin/uc-pc-qyp-sixteen-route' into cb…
MaxGhenis Oct 22, 2026
cf381c1
Merge remote-tracking branch 'origin/cb-qyp-school-leaver-routes' int…
MaxGhenis Oct 22, 2026
c51de17
Merge remote-tracking branch 'origin/ctc-qyp-school-leaver-routes' in…
MaxGhenis Oct 22, 2026
98a4739
Merge remote-tracking branch 'origin/qyp-terminal-date-19' into qyp-i…
MaxGhenis Oct 22, 2026
b6d8af5
Re-derive VAT survey coverage on the certified a133f37a cut
MaxGhenis Oct 24, 2026
ad53a00
Pin 2024 VAT to the product and record the cuts' revisions
MaxGhenis Oct 24, 2026
e1ff493
Cite the 6cba reform runs and align the legacy-factor property with n…
MaxGhenis Oct 24, 2026
87911eb
Merge main (#2189 energy split) into the VAT coverage fixes
MaxGhenis Oct 24, 2026
b2a3e51
Merge main (#2319 private school VAT split) into the VAT coverage fixes
MaxGhenis Oct 25, 2026
aecd34e
Bar income-related ESA at pensionable age and on State Pension Credit
MaxGhenis Oct 31, 2026
bd1d381
Merge origin/main (2da212abc) into fix-2565-esa-pension-credit
MaxGhenis Oct 31, 2026
dcf2969
Test that pensionable age and Pension Credit bar income-related ESA
MaxGhenis Oct 31, 2026
1ca890c
Pin outside reporters beside a Pension Credit couple in the property …
MaxGhenis Oct 31, 2026
d538f82
Add changelog fragment for #2565
MaxGhenis Oct 31, 2026
7e85a89
Bar income-related ESA on Pension Credit worked out without it
MaxGhenis Oct 31, 2026
e7f5b0a
Test the Pension Credit bar against a simulation without the award
MaxGhenis Oct 31, 2026
1971645
Cite pensionable-age rules by their numbers and restate the changelog
MaxGhenis Oct 31, 2026
d37e42d
Open the Pension Credit branch only for a claim the bar could end
MaxGhenis Oct 31, 2026
0d157f0
Name the actor in the Pension Credit bar's comments and changelog
MaxGhenis Oct 31, 2026
196fea8
Count Universal Credit carer-element awards in the severe disability …
MaxGhenis Nov 1, 2026
d08ed19
Read no change where a head is not finite at baseline
MaxGhenis Nov 1, 2026
0220a0c
Hold a head not finite at baseline by its own formula
MaxGhenis Nov 1, 2026
17c7381
Set Income Tax reliefs and allowances against income in the way that …
MaxGhenis Nov 1, 2026
6d4a290
Describe heads not finite at baseline in the README and changelog
MaxGhenis Nov 1, 2026
e388e1f
Test that the check gives the engine only finite values
MaxGhenis Nov 1, 2026
2e6ae55
Test Universal Credit carer-element awards in the carer test and the …
MaxGhenis Nov 1, 2026
2f5b183
Follow net income in the allocation, test s. 25(3A) and update tests …
MaxGhenis Nov 1, 2026
b6ddfcf
Read entered or reformed Pension Credit for every couple the ESA bar …
MaxGhenis Nov 1, 2026
998486f
Allow the allocation search's tie tolerance in the dense-grid propert…
MaxGhenis Nov 1, 2026
d444183
Leave Housing Benefit's override helper as it is on main
MaxGhenis Nov 1, 2026
da6d9ad
Name the claimant or body that acts in the ESA bar's comments
MaxGhenis Nov 1, 2026
2ee68e7
Count only the screen's reads in the simulation itself
MaxGhenis Nov 1, 2026
cef744b
Count the screen's reads for the test year in the simulation itself
MaxGhenis Nov 1, 2026
60de330
Skip the least-tax search for people who cannot gain from another share
MaxGhenis Nov 1, 2026
48f57f9
Test units that cancel within a household, and narrow the finite claims
MaxGhenis Nov 1, 2026
8604456
Gate the carer element award on an upper bound and date Scotland's ni…
MaxGhenis Nov 1, 2026
3ab4884
Read the fast path's rates as the slope of the tax schedule
MaxGhenis Nov 1, 2026
1f87a15
Test that the award bound reads neither the award nor Pension Credit
MaxGhenis Nov 1, 2026
c477b5d
Describe the award bound and the carer test in active voice
MaxGhenis Nov 1, 2026
20edd2e
Give the carer docstrings their actors and the bound an exact label
MaxGhenis Nov 1, 2026
16766c1
Test pay that stops at the basic rate limit with nil-rate savings abo…
MaxGhenis Nov 1, 2026
466519e
Name who acts in the disclosed-limit test comments
MaxGhenis Nov 1, 2026
e6ba856
Expect the least-tax share in the property income band base savings case
MaxGhenis Nov 1, 2026
09e0c08
Compare whole Pension Credit definitions before inferring nil
MaxGhenis Nov 1, 2026
3fc1e1d
Read Pension Credit for every couple when take-up has a formula
MaxGhenis Nov 1, 2026
31d90e9
Name who acts in the ESA bar's comments and test notes
MaxGhenis Nov 1, 2026
cf7153e
Check the awards before the shortcut flag in the new reform tests
MaxGhenis Nov 1, 2026
eec9f64
Name the five Pension Credit variables in the exhaustive guard test
MaxGhenis Nov 1, 2026
4522b5d
Restate the property income band base properties for the least-tax share
MaxGhenis Nov 1, 2026
abdcede
Name who acts in the remaining new comments and docstrings
MaxGhenis Nov 1, 2026
e500393
Name the model as the actor in the property income band base notes
MaxGhenis Nov 1, 2026
2588e56
Pin the three nil-award routes to #2795 and test the bound against th…
MaxGhenis Nov 1, 2026
ca1e243
Describe the bound's third nil-award route and qualify Scotland's 202…
MaxGhenis Nov 1, 2026
b35b61f
Split the changelog's Scottish sentence and quote the zero-value words
MaxGhenis Nov 1, 2026
f15ff9b
Put actors in the carer docs, YAML comments and test notes
MaxGhenis Nov 1, 2026
1d6df1a
Name the model as the payer in the ESA Pension Credit docstrings
MaxGhenis Nov 1, 2026
4613ac6
Give the bound's documentation a main verb and number every test inva…
MaxGhenis Nov 1, 2026
9d8d3e0
Leave the Marriage Allowance out of the least-tax search
MaxGhenis Nov 1, 2026
e6c2465
Start SDLT's 2016 and 2017 changes on their statutory dates
claude Nov 1, 2026
c29c2c4
Test SDLT's statutory start dates and document them
claude Nov 1, 2026
ea880ff
Name Parliament as the actor in the Marriage Allowance notes
MaxGhenis Nov 1, 2026
5d9ce13
Name who acts in the allowance-order comments
MaxGhenis Nov 2, 2026
74fdacf
Filter rate identities on the allowance order
MaxGhenis Nov 2, 2026
d10b985
Add a private renter above the LHA rate to the endpoint comparison
MaxGhenis Nov 2, 2026
260f6a7
Name the actors in the carer-award comments and documentation
MaxGhenis Nov 2, 2026
1e5771c
Document the State Pension's 52 weeks and test survey data to Income Tax
MaxGhenis Nov 2, 2026
f10a566
Say which type and which year's rate split the reported State Pension
MaxGhenis Nov 2, 2026
54cffce
Name the simulated year in the State Pension split docs
MaxGhenis Nov 2, 2026
af118de
Package the SDLT grid fixture, cite the Wales Act for Wales, pin the …
claude Nov 2, 2026
6429896
Hold pension relief on pay and keep the UC earnings slice in the old …
claude Nov 2, 2026
411dc02
Deduct only the tax the Council Tax Reduction schemes allow
claude Nov 2, 2026
def18d3
Rename the property income band base test in the shard durations
claude Nov 2, 2026
fff13ed
Name the housing costs the bound compares and reflow the carer comments
claude Nov 2, 2026
6653336
Apply the school share in the VAT grossing property's oracle
claude Nov 2, 2026
36bbbf4
Type the VAT fragment as added and pin the standard rate in the example
claude Nov 2, 2026
70633f0
State the relief at source law and the search's limits as run
claude Nov 2, 2026
4574ee1
Split Council Tax Reduction's tax deduction as Pension Credit does, a…
claude Nov 2, 2026
3d0bf96
Test the Council Tax Reduction tax split against Pension Credit, and …
claude Nov 2, 2026
faa4234
Date SDLT Table A from 4 December 2014 and fix the first.max switch test
claude Nov 2, 2026
f539a56
Draw Universal Credit families in the Council Tax Reduction tax prope…
claude Nov 2, 2026
056a674
Let the trading loss and paternity pay tests follow the least-tax share
claude Nov 2, 2026
f9fdc63
Merge branch 'main' into claude/uc-carer-awards-nits-1pezj2
MaxGhenis Nov 2, 2026
7778076
Read the scheme's tax deduction in the CTR route and trading-loss tests
claude Nov 2, 2026
08129d4
Merge #2813 (fix-2562-esa-abolition at 5a5ac5fb1) into #2807
claude Nov 2, 2026
15b61ba
Merge main at 0080274d7
claude Nov 2, 2026
e6a10dc
Merge #2340 (sp-age-addition-2139 at 8eb9a0af7) into the reported wee…
claude Nov 2, 2026
db69d66
Merge main at 0080274d7 (with #2751's 5p rounding)
claude Nov 2, 2026
3b54d53
Rewrap the pension relief comment in the allowance search
MaxGhenis Nov 2, 2026
c3f9cd4
Save the 2026 awards in six pension-age ESA cases from the abolition
claude Nov 2, 2026
496ee52
Report the age addition with the full basic rate in the reported week…
claude Nov 2, 2026
d2ce8b5
Hold the pension-age ESA properties with the 2026 abolition in force
claude Nov 2, 2026
71ba275
Wrap the pension-age property docstring
claude Nov 2, 2026
6602ccc
Narrow the s. 192(4A) citation in the allocation docstring
MaxGhenis Nov 2, 2026
caeab61
Align #2818's State Pension text with the stacked formulas
MaxGhenis Nov 2, 2026
70563bb
Pay a couple on income-related ESA no Pension Credit
claude Nov 2, 2026
a1771bb
Check the outside reporter's row in the pension-age ESA property
claude Nov 2, 2026
254669a
Merge #2813's head 7fe7360fa into the Pension Credit bar
MaxGhenis Nov 3, 2026
4ebd4df
Leave the Step 7 charges out of the pensioner Council Tax Reduction d…
claude Nov 3, 2026
4f7af38
Merge #2279's head c5b9850a3 into qyp-terminal-date-19
claude Nov 3, 2026
d3a4579
Merge main f4a317019 into qyp-terminal-date-19
claude Nov 3, 2026
d5b8d12
Pin own awards and Income Support against the 19th-birthday terminal …
claude Nov 3, 2026
93d59f0
Drop the list marker from the terminal-date changelog fragment
claude Nov 3, 2026
cde22d7
Merge #2279's head c5b9850a3 into #2299's branch
claude Nov 3, 2026
adc6e78
Merge main 52b30809f into #2299's branch
claude Nov 3, 2026
9986aec
Merge H1 (adc6e7822) into #2301's branch
claude Nov 3, 2026
562d067
Merge #2813's head 3c9890a19 into the Pension Credit bar
claude Nov 3, 2026
419bccb
Name every route to the ESA-only row and the other reading of para 4(…
claude Nov 3, 2026
d6bf2f6
Add case 18's man to every generated 2016 example
claude Nov 3, 2026
d0ffe7f
Give DWP the verb where an appointee saving or a regulation acted
claude Nov 3, 2026
e355956
Bar Child Tax Credit qualifying young persons who receive Income Support
claude Nov 3, 2026
e5f239b
Fix the CTC Income Support properties' inputs and start the any-year …
claude Nov 3, 2026
a447fe7
Read own reported awards in the Child Benefit qualifying young person…
claude Nov 3, 2026
1eb9e07
Merge the Child Benefit own-award fix (a447fe760) from the H1 branch
claude Nov 3, 2026
1e37f9e
Merge H2 (1eb9e075d) into #2302's branch
claude Nov 3, 2026
30fe1a8
Merge #2300's head 93d59f052 into #2302's branch
claude Nov 3, 2026
4e1e017
Read calculated Income Support for Pension Credit and CTC qualifying …
claude Nov 3, 2026
6db2b6d
Format the Income Support properties
claude Nov 3, 2026
ee0482e
Pin the reg. 4A(5) Income Support exclusion at 19 and tighten three n…
MaxGhenis Nov 3, 2026
a8f46e3
Merge #2813's head dc69f3ada into the Pension Credit bar
claude Nov 3, 2026
6cd7081
Add case 26's couple and a 2018 example to the pension-age ESA proper…
claude Nov 3, 2026
0822532
Say which reading of para 4(2)(a) the expected values take, and give …
claude Nov 3, 2026
3c16aea
Test the Marriage Allowance cliff at pay of 43,663 and an annual allo…
claude Nov 3, 2026
c10280e
Drop two statements of intent and rejoin two rewrapped test comments
claude Nov 3, 2026
9419afb
Move the VAT survey coverage to 0.69 on Microcosm a6299504
claude Nov 3, 2026
c2575c9
Derive the VAT coverage on a6299504 in the doc and refresh its proven…
claude Nov 3, 2026
31306e5
Put the VAT property docstring and added fragment in the active voice
claude Nov 3, 2026
303e658
Correct the VAT doc's arithmetic check and tighten its wording
claude Nov 3, 2026
9ee5180
Merge #2759's branch, now with main, into fix-2773-nan-baseline-heads
MaxGhenis Nov 3, 2026
538c4d6
Pay carer benefits on hours only for care of a severely disabled person
claude Nov 3, 2026
aad1868
Pay the Scottish Carer Supplement for each Carer Support award week
claude Nov 3, 2026
cdf713a
Name the actors, fix docs the input makes wrong, test the reported limb
claude Nov 3, 2026
b390758
Test that a supplied entitlement counts as an award once hours stop c…
claude Nov 3, 2026
ea8aa1c
Merge main into fix/vat-coverage-a133
MaxGhenis Nov 3, 2026
af0b602
Say why the cut's own year sets the VAT coverage, and date later rows
MaxGhenis Nov 3, 2026
b60b686
Rewrap the carer premium test header
claude Nov 3, 2026
c79f7e6
Cite reg 2 for the award week in the supplement tests
MaxGhenis Nov 3, 2026
1e1d87e
Check the reported limb of is_carer_for_benefits in the properties
claude Nov 3, 2026
892911c
Exclude own Income Support recipients from the Child Benefit QYP test
claude Nov 3, 2026
d15f64d
Add Child Benefit cases for Income Support in the young person's own …
claude Nov 3, 2026
db3cdae
Hold the Child Benefit charge and personal allowance steps in invaria…
claude Nov 3, 2026
534028c
Pin a step of the Child Benefit charge at working age in Scotland
claude Nov 3, 2026
678a997
Name who acts in the older notes on the deduction's rules
claude Nov 3, 2026
bec8d91
Test the Child Benefit Income Support gate on drawn households
claude Nov 3, 2026
3d5ef70
Read the Child Benefit reg. 8 reports in the Housing Benefit cap oracle
claude Nov 3, 2026
3eb64df
Test the reg. 8 reports on the education route and for contributory ESA
claude Nov 3, 2026
ad5dc0b
Merge #2299's head 3eb64dfc into #2301's branch
claude Nov 3, 2026
817ee7d
Say how the CTC test and the Income Support variable read receipt
claude Nov 3, 2026
77f6cdc
Pin the cost-of-living payment in CTC Cases 18 and 19
claude Nov 3, 2026
ee8ca30
Merge #2301's head 77f6cdc5 into #2302's branch
claude Nov 3, 2026
f7e5fde
Merge #2300's head ee0482e75 into #2302's branch
claude Nov 3, 2026
c21e35b
Pin the cost-of-living payment in Income Support Case 8
claude Nov 3, 2026
05095a1
Subtract the cost-of-living payment in the reproducer, and test neutr…
claude Nov 3, 2026
812131c
Describe what this branch adds in its changelog fragment
claude Nov 3, 2026
ee788a3
Merge main at 9b456bda6 into the carer award branch
claude Nov 3, 2026
b6b1ce7
Read the carer's actual Universal Credit award in the severe disabili…
claude Nov 3, 2026
31139e8
Need a positive Universal Credit award for Scotland's carer premium i…
claude Nov 3, 2026
4c9c8b1
Charge no Plan 5 student loan repayment before 6 April 2026
claude Nov 3, 2026
b080cf7
Merge main at 9b456bda6 into the Council Tax Reduction tax deduction …
claude Nov 3, 2026
3feb308
Give the history and basis of the Scottish pensioner personal relief …
claude Nov 3, 2026
4af0f04
Cite Interpretation Act 1978 s. 23(1) and (2) for the relief reading
MaxGhenis Nov 3, 2026
be8c090
Cite SSI 2023/302 regulation 2, which has no numbered paragraphs
MaxGhenis Nov 4, 2026
a759e4f
Name six departures and the award-week limits for the supplement
claude Nov 4, 2026
7f2ac12
Wrap the supplement's documentation and name who nets week by week
MaxGhenis Nov 4, 2026
e4ddaf6
Merge main at af9361114 into the Council Tax Reduction tax deduction …
claude Nov 4, 2026
178852e
Keep main's tax measure in the schemes the deduction leaves alone
claude Nov 4, 2026
023de78
Leave the tax on rent from property out of the pensioner deduction
claude Nov 4, 2026
d237386
Describe the pensioner schemes' income from capital and the model's a…
claude Nov 4, 2026
4684c2f
Test that the other schemes deduct the legacy means test measure
claude Nov 4, 2026
8700602
Name main's Universal Credit award test in the deduction's documentation
claude Nov 4, 2026
3589f7e
Read the Council Tax Reduction line's own deduction in the legacy pro…
claude Nov 4, 2026
cdf5fbd
Merge main at 557087da1 into the carer award branch
claude Nov 4, 2026
f75f41a
Compare the veteran test with the law at the merge with main
claude Nov 4, 2026
f8cba9d
Say when the Pension Credit branch's result can differ from the famil…
MaxGhenis Nov 4, 2026
ffe20fb
Date the 0.06% school VAT bound and move the 2pp VAT fixture to 27.1
MaxGhenis Nov 5, 2026
44ea4c1
Say which reading case 18's values agree with, and turn pension_credi…
claude Nov 5, 2026
9327cec
Merge main at 95dfc62f8 into the Pension Credit bar
claude Nov 5, 2026
dd8cd3e
Name the model as the actor in the Child Benefit changelog fragment
claude Nov 5, 2026
f5fd079
Merge main 95dfc62f8 into ctc-qyp-school-leaver-routes
claude Nov 5, 2026
596bf4f
Merge main 95dfc62f8 into qyp-terminal-date-19
claude Nov 5, 2026
87e2d1c
Merge #2301's head f5fd0793 into qyp-income-support-exclusion
claude Nov 5, 2026
66a200e
Merge #2300's head 596bf4f1 into qyp-income-support-exclusion
claude Nov 5, 2026
0835944
Guard against random draws in the engine
claude Nov 5, 2026
741054b
Give DWP or the formula the verb in the PR's remaining comments, and …
claude Nov 5, 2026
3f7735f
Merge main at 47a2817e2 into the Pension Credit bar
claude Nov 5, 2026
78d4d50
Merge main 47a2817e2 into #2301's line
claude Nov 5, 2026
25cb007
Merge main 47a2817e2 into #2300's line
claude Nov 5, 2026
62f5fca
Say whose calculated Income Support the #2302 changelog fragment means
claude Nov 5, 2026
919cc37
Merge #2301's head 78d4d5070 into #2302's line
claude Nov 5, 2026
0d934a8
Merge #2300's head 25cb0070e into #2302's line
claude Nov 5, 2026
6f4d331
Correct the guard's comments and add two sys.modules test rows
MaxGhenis Nov 5, 2026
f56b53b
Price real incomes to a fixed base year
claude Nov 5, 2026
eab8ebb
Merge main into fix-2565-esa-pension-credit
MaxGhenis Nov 5, 2026
83e286b
Resolve the clock guard's import aliases in their lexical scope
MaxGhenis Nov 5, 2026
993f13a
Merge main at fed9bcabe into the price base year branch
MaxGhenis Nov 5, 2026
79855a7
Merge main into the Council Tax Reduction tax deduction branch
MaxGhenis Nov 5, 2026
5c53e2b
Merge main into the Plan 5 student loan repayment branch
MaxGhenis Nov 5, 2026
793ce35
Merge main into fix-2773-nan-baseline-heads
MaxGhenis Nov 5, 2026
dcd4831
Merge PR 2854 for the integration check
MaxGhenis Nov 6, 2026
98f7c26
Merge PR 2864 for the integration check
MaxGhenis Nov 6, 2026
7a501bf
Merge PR 2873 for the integration check
MaxGhenis Nov 6, 2026
d0b15c3
Merge PR 2876 for the integration check
MaxGhenis Nov 6, 2026
4769894
Merge PR 2634 for the integration check
MaxGhenis Nov 6, 2026
f8ff3ee
Merge PR 2807 for the integration check
MaxGhenis Nov 6, 2026
059356d
Merge PR 2818 for the integration check
MaxGhenis Nov 6, 2026
4e87ceb
Merge PR 2837 for the integration check
MaxGhenis Nov 6, 2026
ff1a670
Merge PR 2857 for the integration check
MaxGhenis Nov 6, 2026
fe816f5
Merge PR 2860 for the integration check
MaxGhenis Nov 6, 2026
281061f
Merge PR 2827 for the integration check
MaxGhenis Nov 6, 2026
1725378
Merge PR 2834 for the integration check
MaxGhenis Nov 6, 2026
bb29de8
Merge PR 2830 for the integration check
MaxGhenis Nov 6, 2026
a2e5eb1
Merge PR 2302 for the integration check
MaxGhenis Nov 6, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ policyengine_uk/calibration/*.h5
!uprating_growth_factors.csv
!policyengine_uk/parameters/gov/dwp/LHA/lha_published_rates_sources.csv
!policyengine_uk/tests/fixtures/energy_prices/*.csv
!policyengine_uk/tests/fixtures/sdlt_ltt_main_grid_2018_2030.csv

# Virtual environments
.venv/
Expand Down
1 change: 1 addition & 0 deletions changelog.d/2090.fixed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
The model now deducts from Council Tax Reduction income only the income tax and National Insurance each scheme allows: in Scotland's working-age scheme the extra tax earnings cause and the notional tax on self-employed profit, and in the pensioner schemes of England, Wales and Scotland that same earnings tax, the tax on the other counted income and the notional tax on profit, with no tax on savings, dividends, rent from property or the Scottish Carer Supplement, and no High Income Child Benefit Charge, where earnings do not raise them.
1 change: 1 addition & 0 deletions changelog.d/2106.fixed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
The model now sets the Personal Allowance, other allowances and trade loss relief against non-savings, savings and dividend income in the way that gives the least tax (ITA 2007 s. 25(2)), and from 2027-28 against other income before property, savings and dividend income (s. 25(3A)), where it previously always took them from non-savings income first. Pension relief stays on non-savings income, and the income tax that Universal Credit deducts from earnings still follows the order non-savings, savings, dividends.
1 change: 1 addition & 0 deletions changelog.d/2120.fixed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
The model now counts a carer's Universal Credit award with the carer element, where the award comes to at least one penny, when deciding the severe disability premium and the Pension Credit severe disability addition, and in Scotland's working-age council tax reduction it counts such an award for the carer premium from 1 April 2022 (#2120, #2124).
1 change: 1 addition & 0 deletions changelog.d/2310.fixed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Pay Carer's Allowance and Carer Support Payment, and count a carer for the Universal Credit carer element, on caring hours only where the new input `cares_for_severely_disabled_person` says the person cared for gets a qualifying disability benefit; it defaults to true, so results change only where a calculation sets it false.
1 change: 1 addition & 0 deletions changelog.d/2565.fixed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
The model no longer pays income-related ESA to a claimant who has reached pensionable age, or to a couple that would get State Pension Credit without that award, whether the model's formulas, an input or a reform set that Pension Credit, and it pays no Pension Credit to a couple while it pays the couple income-related ESA (Welfare Reform Act 2007 s.1(3)(c) and Sch 1 para 6(1)(c) and (d)).
1 change: 1 addition & 0 deletions changelog.d/2633.added.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Added property tests for VAT grossing (the routing between the survey coverage and the deprecated combined factor, including the closeness band, and VAT as the statutory liability over the shipped product, times one minus private school fees' share of VAT receipts, on a vector of households), a test that the model grosses 2024 by the same product as later years, and a record of how the coverage of 0.67 performed on the Microcosm UK cuts `6cba5d71` and `a133f37a`, which followed `f9d1922c` (#2633).
1 change: 1 addition & 0 deletions changelog.d/2633.changed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Re-derived the survey VAT consumption coverage (`gov.simulation.vat.survey_consumption_coverage`) on the certified Microcosm UK 2024-25 national cut `a6299504` and moved it from 0.67 to 0.69: on that cut, 2024-25 total `vat` comes to £176.06bn at 0.67, 3.0% above OBR receipts of £170.994bn, and £171.02bn at 0.69, 0.02% above. Moved the deprecated combined factor `gov.simulation.microdata_vat_coverage` to the new product, 0.483.
1 change: 1 addition & 0 deletions changelog.d/2773.fixed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
The aggregate checker reports non-finite baseline values as blocking failures and continues checking readable households.
1 change: 1 addition & 0 deletions changelog.d/2791.fixed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Pay the Scottish Carer Supplement for each award week in which Carer Support Payment is payable, up to 52 a year, counting the weeks from the larger of the payment and the entitlement before the overlapping-benefit reduction, so a carer paid 13 weeks of Carer Support Payment after moving to England gets £152.10 of supplement in 2026-27 rather than £608.40.
1 change: 1 addition & 0 deletions changelog.d/2801.fixed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
The model now dates the main residential rates in s. 55(1B) Table A from 4 December 2014, first-time buyers' relief from 22 November 2017, the higher rates for additional dwellings from 1 April 2016 and the 2016 non-residential rates from 17 March 2016. Before 17 March 2016 it computes SDLT on a non-residential purchase as one percentage of the whole price. It computes SDLT on purchases in Wales until 31 March 2018 and Land Transaction Tax from 1 April 2018.
1 change: 1 addition & 0 deletions changelog.d/2863.fixed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
The student loan repayment formula now charges Plan 5 borrowers nothing before 6 April 2026, as SI 2009/470 reg. 15(2BA) requires.
1 change: 1 addition & 0 deletions changelog.d/2874.changed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
The test suite fails on any new random draw, sampling call or hash of entity ids in the package, and lists today's draws in a ratchet.
1 change: 1 addition & 0 deletions changelog.d/2875.fixed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
The real income variables now price to the year in gov.simulation.price_base_year (2026) instead of the year the simulation runs, and inflation_adjustment_ahc uses one price index on both sides of its ratio.
1 change: 1 addition & 0 deletions changelog.d/cb-qyp-school-leaver-routes.fixed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Added the Child Benefit qualifying young person conditions for young people who have left education (Child Benefit (General) Regulations 2006 regs 4, 5 and 7), which the Housing Benefit, legacy benefit and Council Tax Reduction young persons follow: a 16-year-old counts until the 31 August after their 16th birthday, in any year that starts before it, two new inputs place the 20-week extension period and the terminal date, and the model pays no Child Benefit for a young person who qualifies only through the terminal date and works 24 hours or more a week (reg. 7(3)). A young person who reports their own Universal Credit, Employment and Support Allowance or income-based Jobseeker's Allowance, or their own Income Support while DWP pays it, is not one, on any route (reg. 8).
1 change: 1 addition & 0 deletions changelog.d/ctc-qyp-school-leaver-routes.fixed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Counted a 16-year-old who has left education as a Child Tax Credit qualifying young person until the 31 August after their 16th birthday, in any year that starts before it (Child Tax Credit Regulations 2002 reg. 4), and added an input for the 20 weeks after leaving while registered for work or training (reg. 5(3)(b)). Remunerative work of 24 hours a week ends both for a young person who has left education (reg. 5(4)(a)), and Income Support received by the young person ends every route (reg. 5(4)(c)).
1 change: 1 addition & 0 deletions changelog.d/qyp-income-support-exclusion.fixed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Tested that Pension Credit, Child Benefit and Child Tax Credit each stop counting a young person who receives Income Support in their own right as a qualifying young person, and Universal Credit does not (SPC Regs 2002 reg. 4A(5); Child Benefit (General) Regulations 2006 reg. 8(2)(a); CTC Regs 2002 reg. 5(4)(c); UC Regs 2013 reg. 5(5)), in the baseline and under reforms that remove Income Support. Pension Credit and Child Tax Credit read the benefit unit's calculated Income Support for whichever of the claimant and partner receives it, so a reform that pays no Income Support ends the exclusion for that person; Child Benefit reads the young person's own report while Income Support is in payment.
1 change: 1 addition & 0 deletions changelog.d/qyp-terminal-date-19.fixed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Placed the 1 September following a qualifying young person's 19th birthday from their date of birth, for Universal Credit and Pension Credit (UC Regs 2013 reg. 5(1)(b); SPC Regs 2002 reg. 4A(1)(b)). The model now counts a 19-year-old in education for Universal Credit by default in household calculations, as the microdata already did, and applies the date to Pension Credit, which had no terminal date.
1 change: 1 addition & 0 deletions changelog.d/state-pension-reported-weeks.changed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Document that state_pension_reported is the weekly State Pension times 52, the weeks the State Pension components read it back at, and test the route from a survey's weekly amount to Income Tax under the Pension Tax Allowance.
15 changes: 7 additions & 8 deletions docs/book/assumptions/mp30k-uk-switch-plan.md
Original file line number Diff line number Diff line change
Expand Up @@ -115,14 +115,13 @@ A documented gate must pass before any environment's default changes:

1. Dataset choice stays a runtime setting: no code in this repo branches on
which dataset is loaded. One parameter is tied to the dataset, though:
`gov.simulation.vat.survey_consumption_coverage` is calibrated to one
Microcosm UK 2024-25 national cut only
(`microcosm-uk-2024-25-national-20261002T230158Z-5c6b3f68`; policyengine.py
6.10.0 pins the later cut
`microcosm-uk-2024-25-national-20261019T083323Z-6cba5d71`), puts 2024-25
VAT 38% (policyengine-uk-data 1.56.16) or 44% (1.58.0) above receipts on
the Enhanced FRS 2024-25, and has to be re-derived when the dataset it
should match changes (`docs/engineering/vat-coverage.md`).
`gov.simulation.vat.survey_consumption_coverage` matches 2024-25 receipts
on one Microcosm UK 2024-25 national cut only
(`microcosm-uk-2024-25-national-20261025T091414Z-a6299504`, which
policyengine.py 6.11.1 and 6.12.0 certify), and puts 2024-25 VAT 38% above
receipts on the Enhanced FRS 2024-25 (policyengine-uk-data 1.58.1).
Re-derive it, with `docs/engineering/vat-coverage.md`, whenever the dataset
it should match changes.
2. While both are in use, CI runs the dataset-dependent tests on both.
3. The default is set per environment: for direct use of this package
through `POLICYENGINE_UK_DEFAULT_DATASET`; for this repository's tests
Expand Down
3 changes: 2 additions & 1 deletion docs/book/programs/gov/dwp/disability-legacy-benefits.md
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,8 @@ annual netting does not represent benefit spells at different weekly rates.
The focused household tests retain live UC eligibility, disability/carer
elements and final awards. Legacy receipt and disability-assessment inputs are
assumptions, not a re-derivation of IB/SDA entitlement. The care-hours interface
does not identify the person cared for or check their qualifying benefit. No
does not identify the person cared for, and reads their qualifying benefit only
from the input `cares_for_severely_disabled_person`, which defaults to true. No
private-data impact or Axiom parity has been measured.

## References
Expand Down
16 changes: 16 additions & 0 deletions docs/book/programs/gov/hmrc/stamp-duty.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,22 @@
"The regulation of SDLT is defined in part 4 of the [Finance Act 2003](https://www.legislation.gov.uk/ukpga/2003/14/part/4)."
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"## Start dates in 2014 to 2018\n",
"\n",
"This page lists the effective date Parliament set for each change. Each model year reads the parameters in force on 30 April:\n",
"\n",
"- Parliament started the main residential rates in s55(1B) Table A, charged on slices of the price, on 4 December 2014 ([Stamp Duty Land Tax Act 2015 s2(2)](https://www.legislation.gov.uk/ukpga/2015/1/section/2)). Every model year from 2015 reads them.\n",
"- Parliament started first-time buyers' relief on 22 November 2017 ([Finance Act 2018 s41(8)](https://www.legislation.gov.uk/ukpga/2018/3/section/41/enacted)), so the model grants it from model year 2018.\n",
"- Parliament started the higher rates for additional dwellings on 1 April 2016 ([Finance Act 2016 s128(5)](https://www.legislation.gov.uk/ukpga/2016/24/section/128/enacted)). In model year 2015 a buyer of an additional dwelling pays the main rates at any price, and a reform to the main rates reaches that buyer too. A reform can move the switch through `gov.hmrc.stamp_duty.residential.purchase.additional.higher_rates_apply`.\n",
"- Parliament moved non-residential purchases to sliced rates, and added a 2% band on lease rent above £5 million, from 17 March 2016 ([Finance Act 2016 s127(12)](https://www.legislation.gov.uk/ukpga/2016/24/section/127/enacted)). Before then HMRC charged the whole price of a non-residential purchase at the percentage for its band under [s55(2) Table B as at 30 April 2015](https://www.legislation.gov.uk/ukpga/2003/14/section/55/2015-04-30): 0% up to £150,000, 1% up to £250,000, 3% up to £500,000 and 4% above. The model applies that table in model year 2015, so a £1,000,000 purchase pays £40,000 in model year 2015 and £39,500 from model year 2016.\n",
"- HMRC charged SDLT on land in Wales until 31 March 2018 ([Finance Act 2003 s48(1)(a) as at 30 April 2017](https://www.legislation.gov.uk/ukpga/2003/14/section/48/2017-04-30)). Parliament ended that charge from 1 April 2018 ([Wales Act 2014 s16](https://www.legislation.gov.uk/ukpga/2014/29/section/16), on the date the Treasury appointed in [SI 2018/214](https://www.legislation.gov.uk/uksi/2018/214/article/2/made)), and the Welsh Revenue Authority charges Land Transaction Tax from then ([Land Transaction Tax and Anti-avoidance of Devolved Taxes (Wales) Act 2017 s2](https://www.legislation.gov.uk/anaw/2017/1/section/2)). The model computes SDLT on purchases in Wales up to model year 2017 and Land Transaction Tax from model year 2018. A reform can move the switch through `gov.hmrc.stamp_duty.applies_in_wales`."
]
},
{
"attachments": {},
"cell_type": "markdown",
Expand Down
8 changes: 3 additions & 5 deletions docs/book/validation/student-loan-repayments.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
"- **Plan 1**: loans for courses begun on or before 31 August 2012 under England's and Wales's student support regulations ([SI 2009/470 reg. 3A](https://www.legislation.gov.uk/uksi/2009/470/regulation/3A)), and every Student Finance Northern Ireland loan ([GOV.UK](https://www.gov.uk/repaying-your-student-loan/which-repayment-plan-you-are-on)). 9% of income above £24,990.\n",
"- **Plan 2**: Student Finance England loans for courses begun from 1 September 2012 to 31 July 2023, and Student Finance Wales loans for courses begun on or after 1 September 2012 ([GOV.UK](https://www.gov.uk/repaying-your-student-loan/which-repayment-plan-you-are-on)). 9% of income above £27,295.\n",
"- **Plan 4**: loans under Scottish student loan regulations from 1998 onwards whose repayments the Scottish Ministers have HMRC collect ([SI 2009/470 reg. 3D](https://www.legislation.gov.uk/uksi/2009/470/regulation/3D)). GOV.UK puts every Student Awards Agency Scotland loan on Plan 4. 9% of income above £31,395.\n",
"- **Plan 5**: Student Finance England loans for courses begun on or after 1 August 2023 ([GOV.UK](https://www.gov.uk/repaying-your-student-loan/which-repayment-plan-you-are-on)). Its threshold is £25,000, but SI 2009/470 reg. 15(2BA), which [SI 2022/1335 reg. 15(9)](https://www.legislation.gov.uk/uksi/2022/1335/regulation/15/made) inserted, requires no repayment of a Plan 5 loan on or before 5 April 2026, so Plan 5 borrowers owe nothing in 2024-25 or 2025-26. The model doesn't yet apply reg. 15(2BA): it charges Plan 5 borrowers 9% of income above £25,000 in those years too.\n",
"- **Plan 5**: Student Finance England loans for courses begun on or after 1 August 2023 ([GOV.UK](https://www.gov.uk/repaying-your-student-loan/which-repayment-plan-you-are-on)). Its threshold is £25,000, but SI 2009/470 reg. 15(2BA), which [SI 2022/1335 reg. 15(9)](https://www.legislation.gov.uk/uksi/2022/1335/regulation/15/made) inserted, requires no repayment of a Plan 5 loan on or before 5 April 2026, so Plan 5 borrowers owe nothing in 2024-25 or 2025-26. From 2026-27 they repay 9% of income above that threshold.\n",
"- **Postgraduate**: 6% of income above £21,000.\n",
"\n",
"The FRS captures reported student loan repayments, while PolicyEngine calculates repayments based on income and loan plan type."
Expand Down Expand Up @@ -146,17 +146,15 @@
"source": [
"## What can make the two measures differ\n",
"\n",
"The code compares two variables. `student_loan_repayments` holds the repayments a dataset reports; where a dataset supplies none, its formula returns `student_loan_repayment`, and the two match exactly. `student_loan_repayment` applies the plan's rate to income above the plan's threshold, and caps the result at `student_loan_balance` where the balance is known. They can differ for these reasons:\n",
"The code compares two variables. `student_loan_repayments` holds the repayments a dataset reports; where a dataset supplies none, its formula returns `student_loan_repayment`, and the two match exactly. `student_loan_repayment` applies the plan's rate to income above the plan's threshold, charges a Plan 5 borrower nothing before 2026-27, and caps the result at `student_loan_balance` where the balance is known. They can differ for these reasons:\n",
"\n",
"1. **Annual income**: the model applies the threshold to a year's income (`student_loan_income`, net income less benefits in kind), not to each pay period, so it doesn't reflect how income varies within the year.\n",
"\n",
"2. **Voluntary repayments**: the formula holds no voluntary repayments, so it leaves out any that a reported figure includes.\n",
"\n",
"3. **One plan per person**: `student_loan_plan` gives each person one plan, so the model can't charge someone who holds loans on two plans for both.\n",
"\n",
"4. **Missing plans**: a person with no plan (`NONE`) gets no modelled repayment, whatever they report. [#1764](https://github.com/PolicyEngine/policyengine-uk/issues/1764) reports a run on `enhanced_frs_2023_24.h5` with policyengine-uk 2.88.43 for 2026 in which 5,570 people had a reported repayment and none had a modelled one, because no person had a plan.\n",
"\n",
"5. **Plan 5 before April 2026**: the model charges Plan 5 borrowers repayments that the law doesn't require until 6 April 2026 (see the plan list above)."
"4. **Missing plans**: a person with no plan (`NONE`) gets no modelled repayment, whatever they report. [#1764](https://github.com/PolicyEngine/policyengine-uk/issues/1764) reports a run on `enhanced_frs_2023_24.h5` with policyengine-uk 2.88.43 for 2026 in which 5,570 people had a reported repayment and none had a modelled one, because no person had a plan."
]
},
{
Expand Down
Loading
Loading