Repository navigation
Conversation
30 Del. C. 1106(b)(3)c-e raise the military pension exclusion cap to $15,000 for 2027, $20,000 for 2028 and $25,000 from 2029, and from 2027 give filers 60 or older the greater of the $12,500 pension exclusion and their military pension up to that cap. PolicyEngine-US held the cap at $12,500 and gave 60+ filers only the pension exclusion. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Senate Amendment 1 to SB 219 (85 Del. Laws c. 426) added 30 Del. C. 1106(b)(3)f.4: a person 60 or older takes the (b)(3) subtraction only after 3 years of Delaware domicile, or 5 years for a person domiciled in Delaware from 2027. A new person input, de_pension_exclusion_domicile_requirement_met, defaults to true, and a switch applies the rule from tax year 2027, as the act's fiscal note assumes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
David, I'd like your call on the three Delaware readings in the PR body, above all the first. SB 219 took effect when the Governor signed it and names no first tax year for the domicile test, so the PR applies the test from 2027, as the fiscal note assumes. It also follows the text in denying a filer who fails the test the whole (b)(3) subtraction, and, as main does, it counts military survivor benefits toward the general pension exclusion. If you can look by Tuesday afternoon, we can merge it before the Veterans Day post (PolicyEngine/policyengine-app-v2#1523). |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #10716 +/- ##
=========================================
Coverage 100.00% 100.00%
=========================================
Files 1 2 +1
Lines 37 42 +5
Branches 0 3 +3
=========================================
+ Hits 37 42 +5
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
PR Review: Apply Delaware's 2027-2029 military pension caps and the 60+ choiceSummaryI read the enacted bill first: SB 219 as amended by Senate Amendment 1 (85 Del. Laws c. 426, signed and effective 8/17/26), its fiscal note, and 30 Del. C. § 1106(b)(3) as the online Code now prints it. The core change is right. The military caps are $15,000 for 2027, $20,000 for 2028 and $25,000 from 2029. Filers 60 and older get "the greater of" the $12,500 pension exclusion and the capped military pension from 2027. Both work person by person and need no circular calculation. The f.4 domicile test removes the whole (b)(3) subtraction for a 60+ filer who fails it, from 2027. 2026 and earlier results are unchanged from main, which matches the Veterans Day post's 2026 figures ($12,500 under 60 and $12,500 at 60+). I checked 25 expectations by hand and with a small probe at the head, including all five tax figures in the PR body. Three things are open:
My calls on the three readings the author asked about:
Critical (must fix)None. Should address1. Axiom line has no status word. What issue #2078 does well:
What's missing:
Fix: change the line to 2. Survivor annuities: the PR keeps the instructions' narrower reading over the statute's definition, and doesn't record it ( The statute. 30 Del. C. § 1106(b)(3)f.2, unchanged by SB 219, defines the term this way:
The article is indefinite: "an individual's service", not "the taxpayer's service". A Survivor Benefit Plan annuity is a pension received as a result of the deceased member's service. Delaware's own instructions treat survivor pensions as pensions: Line 6 covers "pensions from employers (including pensions of a deceased taxpayer)" (2025 PIT-RES instructions, page 6). The Division's reading. The same page narrows the military branch to a filer who "retired from the United States military and received pension income". But its checkbox asks only whether "your pension is from the United States military". The legislature's reading. The SB 219 fiscal note puts survivors in the base for this act (assumption 4): "there were 8,921 retired military and 1,337 survivors receiving a military pension in Delaware" (fiscal note, page 1). Project rule. Under the 2026-10-20 ruling (CLAUDE.md "Conflicting sources"; CONTRIBUTING.md#source-conflicts), the statute governs over the instructions. The canons say "definitions control" and "the operative words govern over form shortcuts". What the head computes (probe), and the statute's result:
The first and third rows come from this PR's new 60+ branch. The under-60 gap dates from #10182 (October 2026), when the survivor input was added. The PR extends it to 2027-2029 with a new test. Fix, in my view: follow the statute. In the military branch, read
The #10317 readers guard doesn't constrain tax-side files, so either input is allowed. The same definition has governed (b) since at least the 2024 amendment. So the fix changes survivors' 2024-2026 results too, which is a correction, not a regression. If the team instead keeps main's reading, record it as a candidate in 3. Duplicate reference entry in The online Code now prints c-e (checked today), so the existing href corroborates the new values. Fix: delete the new entry, and retitle the existing one, for example "30 Del. C. § 1106(b)(3)b-e". Suggestions
Verified correct
Axiom line assessment
CI statusAt head Branch statusThe branch is 2 commits ahead of main and 40 behind (merge base Verdict: REQUEST_CHANGES |
DTrim99
left a comment
There was a problem hiding this comment.
Requesting changes per the review above: 0 critical, 3 should (axiom line needs a status word and #2078 a recorded blocker; survivor annuities fall under f.2's 'received as a result of an individual's service' but the PR keeps the instructions' retiree-only reading unrecorded; duplicate reference entry), 2 suggestions. The caps, the 60+ choice and 2026 results check out.
… 2024 30 Del. C. 1106(b)(3)f.2 defines a United States military pension as "a pension received as a result of an individual's service" in the uniformed services. 84 Del. Laws c. 437 (SB 329, approved September 26, 2024) inserted that definition; 83 Del. Laws c. 352 had used the term with no definition for 2022 and 2023, when the PIT-RES Line 6 instructions give the exclusion to a filer who retired from the military. A new list parameter, military_income_sources, names the inputs the military branch reads: retired pay for 2022 and 2023, and retired pay plus survivor annuities from 2024. Each person's total takes one cap. The survivor reading is recorded as source-conflict candidate us-de:military-pension-survivor-annuity (statute over the instructions). Also merge the duplicate § 1106(b)(3) reference in cap/military.yaml into one entry titled "30 Del. C. § 1106(b)(3)b-e". Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A dependent with a $10,000 survivor annuity gets no Delaware pension exclusion in 2029. Without the mask on the military pension sum, the dependent would exclude $10,000. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
I changed the axiom line to On survivor annuities, I followed f.2 from 2024 rather than 2022. 84 Del. Laws c. 437 inserted the definition in September 2024, and the 2022 act left the term undefined, so the instructions fill the gap for 2022 and 2023. A new list parameter reads retired pay for those years and adds survivor annuities from 2024. The 2024 survivor case now expects $3,000 and the 2029 case $25,000, the Hypothesis reference matches, and new cases combine both inputs. Candidate I merged the duplicate reference into "30 Del. C. § 1106(b)(3)b-e", and the body now notes the domicile revisit and the test's cost. |
What was wrong
PolicyEngine-US held Delaware's military pension exclusion at $12,500 in every year from 2022, and gave filers 60 and older only the $12,500 pension exclusion. Senate Bill 219 (85 Del. Laws c. 426, signed August 17, 2026) raises the military pension cap for 2027, 2028 and 2029. From 2027 it also lets filers 60 and older take the military pension exclusion when it gives more, and adds a domicile requirement for them.
PolicyEngine-US also kept military survivor annuities (
military_retirement_pay_survivors) out of the military pension branch in every year, so a 50-year-old with a $30,000 Survivor Benefit Plan annuity excluded $2,000. Since 2024 the statute's definition of a United States military pension reaches those annuities.The law
30 Del. C. § 1106(b)(3), as SB 219 and its Senate Amendment 1 left it, subtracts:
The definitions in f:
The PIT-RES instructions for 2022 through 2025 (Line 6) give the military exclusion to a filer who "retired from the United States military and received pension income".
Change
cap/military.yaml: $15,000 from 2027, $20,000 from 2028 and $25,000 from 2029. One reference entry, "30 Del. C. § 1106(b)(3)b-e", now covers the code section.military_retirement_exclusion_available_at_age_threshold.yaml(false through 2026, true from 2027): when true,de_pension_exclusiongives filers at or above the age threshold the greater of their capped pension exclusion and their capped military pension, as it already did for younger filers.domicile_requirement_applies.yaml(true from 2027) and a new person input,de_pension_exclusion_domicile_requirement_met, which defaults to true. When a filer at or above the age threshold fails the requirement,de_pension_exclusiongives them nothing. PolicyEngine has no data on how long people have lived in Delaware, so population results assume everyone meets it.military_income_sources.yaml, the inputs the military branch adds up:military_retirement_payfor 2022 and 2023, andmilitary_retirement_payplusmilitary_retirement_pay_survivorsfrom 2024. Each person's total takes one cap.de_pension_exclusionalready works person by person.The age-threshold switch matters even where the caps make the greater-of look automatic. A 60+ filer's pension basket can net capital losses, so it can fall below the military pension: with $10,000 of military pay and a $3,000 capital loss, the basket is $7,000. Before 2027 the statute gives that filer $7,000. From 2027 it gives $10,000.
Readings taken
domicile_requirement_appliesmoves to 2026.source_conflicts/candidates.yamlrecords the choice asus-de:military-pension-survivor-annuity(follows the statute).Invariants
For every input, with
capthe year's military pension cap and the military pension a person's retired pay (2022 and 2023) or retired pay plus survivor annuity (from 2024):Tests
de_pension_exclusion.yamladds 26 cases and changes one:tests/core/test_de_military_pension_exclusion_properties.pyuses Hypothesis to draw batches of single filers, varying age, military pay, survivor annuities, other pensions, IRA distributions, interest, capital gains or losses, and the domicile input. Each batch also carries every filer's twin with retired pay and survivor annuity exchanged. It checks the invariants above against a reference that restates the statute, for every year from 2022 to 2031. CI runs it in a Rest Python shard (shard 3 at the earlier head830800d043, job 129305119969), which the shard plan picks from recorded times. Locally, on a loaded 18-core Mac, its test call took 10.4 s, against 4.5 s at the earlier head, whose batches carried no twins. Peak memory for the whole pytest process rose from 1.02 GB to 1.04 GB. Linux CI timing will come from this head's run.Removing a new term fails YAML cases: dropping
military_retirement_pay_survivorsfrom the 2024 list fails 6, droppingmilitary_retirement_payfrom it fails 14, emptying the 2022 list fails 5, starting survivors in 2022 fails the 2023 case, starting them in 2025 fails the 2024 case, and dropping the head-or-spouse mask on the military sum fails the dependent case. Setting the age-threshold switch to false for 2027 fails the Hypothesis test; setting the domicile switch to false for 2027 fails three YAML cases.All 523 cases under
tests/policy/baseline/gov/states/depass, as dotest_military_retirement_readers.pyandtest_source_conflicts.py.Before and after
Delaware income tax for a single filer with no other income:
For 2027 at 45: $30,000 − $15,000 leaves $15,000 of Delaware AGI and $11,750 of taxable income after the $3,250 standard deduction. The brackets give $66 + $195 + $84 = $345, less the $110 personal credit. For the 2026 survivor before: $28,000 of AGI and $24,750 of taxable income give $66 + $195 + $480 + $247 = $988, less $110.
Retirees' results for 2026 and earlier don't change. A 65-year-old survivor's 2026 result doesn't change either, because the 60+ choice starts in 2027.
axiom: TheAxiomFoundation/rulespec-us#2078 queued
🤖 Generated with Claude Code