Repository navigation
Conversation
…ed pay The article is rendered from PolicyEngine/veterans-day-2026 (post/template.md and scripts/render_post.py), so its numbers and charts come from that repo's outputs. It is a draft: state checks and law citations are still in progress. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A photographic still life generated from the prompt in PolicyEngine/veterans-day-2026 post/cover_prompt.md: 1800x840 WebP, teal only in the notebook and folder, no legible text. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The first cover repeated the 2025 SPM covers: an oak desk by a window with a teal notebook, glasses and papers. The new one sets worn boots with blank dog tags, a folded olive blanket, a teal mug and a teal knit cap on a porch in late November light. PolicyEngine/veterans-day-2026 keeps the prompt in post/cover_prompt.md. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…y post The statehouse's code pages return 404, so the post links the Department of Revenue's ruling on S.C. Code § 12-6-1171. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
David, could you check the state law in this post? I've also asked for your review on the six PolicyEngine-US fixes it draws on: PolicyEngine/policyengine-us#10702, PolicyEngine/policyengine-us#10713, PolicyEngine/policyengine-us#10714, PolicyEngine/policyengine-us#10715, PolicyEngine/policyengine-us#10716 and PolicyEngine/policyengine-us#10717. Two questions on the post itself:
I'm aiming to publish on Veterans Day, so a read by Tuesday afternoon would help. |
|
Ziming, could you check the Medicaid row in this post's table of other veteran rules? PolicyEngine-US exempts a veteran from the work requirement when both |
|
@MaxGhenis, here's my state-law check of the post. I've answered your two questions first, then listed corrections to the post. (a) The 2026 count: 28 states exempt all military retired pay and 13 tax some of itWho the 41 are. The post doesn't define "41 states with a broad income tax". The usual count works: 50 states minus Alaska, Florida, Nevada, New Hampshire, South Dakota, Tennessee, Texas, Washington and Wyoming. New Hampshire's interest and dividends tax ended with tax year 2025. In 2026, Washington taxes only long-term capital gains; the 9.9% tax on income over $1 million it enacted in 2026 (ESSB 6346) would start in 2028. DC isn't a state and taxes all of the pay, so I'd mention it separately, as the post already does. I suggest naming the nine excluded states in a parenthetical or footnote. Count for tax year 2026, full-year residents:
A suggested lead: "Of the 41 states with a broad income tax, 28 exempt all military retired pay in 2026 and 13 tax some of it, depending on the retiree's age, income, length of service or work; the District of Columbia taxes all of it." Two caveats belong near it, and the post already shows both. First, "exempt" isn't the same as "no extra tax": Utah, South Carolina and Maine exempt the pay but count it in income tests. Second, so do the low-income credits that the retired couple loses (see (d)).
Laws enacted in 2025 or 2026 that I checked: California SB 132, Delaware SB 219, Georgia HB 266, Idaho H.B. 40/479, Indiana HB 1280, Maine c. 452, Montana's 2025 sunset repeal, South Carolina Act 110, Utah SB 60 and Vermont Act 71. Of these, only California's, Idaho's and Vermont's change whether 2026 pay is taxed, and Georgia's and Delaware's start in 2027. Bills in Virginia, Kentucky, Maryland, New Mexico, Colorado, Oregon and California (SB 1407) didn't pass. (b) Kansas: yes, read
|
| State | Couple | Post | Hand check | OK? |
|---|---|---|---|---|
| AL | 45 | −180 | Federal tax rises $3,600 (all at 12%). Alabama deducts federal tax in full and exempts the pay: 5% × $3,600 = −$180. Tax $2,378 → $2,198 matches the Form 40 schedule ($5,000 standard deduction, $3,000 exemption) | ✓ |
| MO | 45 | −25 | 15% × $3,600 = $540 more deduction × 4.7% = −$25.38 | ✓ |
| OR | 45 | 2,310 | Oregon taxes the pay but subtracts federal tax: ($30,000 − $3,600) × 8.75% = $2,310 | ✓ |
| DE | 45 | 1,087 | Taxable income $53,500 → $71,000 after the $12,500 exclusion: $6,500 × 5.55% + $11,000 × 6.6% = $1,086.75 | ✓ |
| MD | 45 | 831 | $17,500 × 4.75% = $831.25 (state tax only; the post leaves out county tax, as stated) | ✓ |
| CO | 45 | 660 | $15,000 × 4.4% | ✓ |
| MT | 45 | 705 | $15,000 × 4.7% | ✓ |
| UT | 45 | 390 | Credit offsets the 4.45% tax; taxpayer credit loses 1.3% × $30,000 = $390 | ✓ |
| SC | 45 | 142 | $2,720 × 5.21% = $141.71 | ✓ |
| DC | 45 / 67 | 1,897 / 463 | DC brackets with the model's standard deduction ($30,000 under Act 26-214, indexed to $30,650, plus $1,650 per spouse 65+). 67: $45,000 − $33,950 = $11,050 → $400 + 6% × $1,050 = $463 | ✓ (confirm the indexed DC amount against the 2026 D-40) |
| DE | 67 | 353 | $45,000 − $12,500 − $11,500 standard deduction = $21,000 → $793 tax − $440 personal and age credits | ✓ |
| MT | 67 | 272 | Federal taxable income $17,100 − 2 × $5,660 Montana age-65 subtraction = $5,780 × 4.7% = $271.66. That subtraction is general, so "taxes all of the pay" stands | ✓ |
| HI | 67 | 440 | Federal AGI $0 → $64,600 crosses N-311's $60,000 line: 2 × $220 | ✓ |
| ME, IN, AZ, ID | 67 | 215, 140, 50, 10 | Mechanisms match § 5213-A, IT-40 Table A, A.R.S. 43-1072.01 and 63-3082 | ✓ |
| NM, OK | 67 | 0, 0 | Should be $152 and $80 (item (c)1) | ✗ model |
| GA, VA, NM, KY, ID, NC, VT | 45 | 0 | Caps and tests above all cover $30,000 for this couple | ✓ |
Sign anomalies (AL −180, MO −25). These aren't bugs. Both states exempt the pay and let filers deduct federal income tax. The pay raises federal tax by $3,600, so Alabama's deduction (all of it) and Missouri's (15% at this income) grow and state tax falls. Oregon has the same subtraction, but it taxes the pay, so there it only trims the increase. One display nit: the map's lowest bin is labeled "None" and also holds the two negative values. A separate "Less tax" bin, or "None or less" as the label, would match the note.
What changes when the six PRs merge. The run (checkout bfeef52eb9, which PolicyEngine/veterans-day-2026 records as 2.105.1 plus the Utah and Montana fixes) already includes #10702 and #10713. Without them, Utah would read about $1,725 and Montana about $1,410 for the 45-year-old, so the release the post cites must contain both. The other four don't move any published value:
- #10714 (MI): affects only veterans with a service-connected disability.
- #10715 (ID 2025 rules): the 45-year-old passes the employment test with room under the cap. The retired couple's pay now shares the cap: $74,736 − $30,000 = $44,736, leaving $264 in Idaho income, still under the standard deduction. Idaho stays at $0 and $10.
- #10716 (DE): starts in 2027.
- #10717 (ID cap): moves the cap by $773, which doesn't bind for these couples.
The NM/OK fix in (c)1 is the change that would alter the charts.
(e) Wording notes
- The post reads neutrally. It describes each state's rule without judging it, and "owes more because of the pay" is accurate given that credits are included.
- "PolicyEngine also models rules in benefit programs and other state taxes": the Kansas and Michigan rows are state income tax rules, so consider "and other state income tax rules".
- Before publishing: fill the lead TODO (suggestion in (a)), replace "checkout bfeef52eb9" in both chart sources with the release number, and drop "Draft, not for publication:" from the
posts.jsondescription. - The template hard-codes "$2,720", "15%", "$15,000" and "Four states". They're right for these households, but a re-render after a model change won't update them.
- Idaho's $10 is the permanent building fund tax; you could name it in the sentence.
|
Yes, the exemption should read I checked the other veteran disability rules for the same pattern and fixed them in PolicyEngine/policyengine-us#10768:
The CTA pass (10% or more) and North Carolina (chapter 61 medical retirement) would need inputs we don't have, so they stay as documented limits. Your Kansas and Michigan rows match who qualifies under the statutes. None of this changes the post's figures. They're household calculations for a retiree with no service-connected disability, and the microdata carry none of these flags. |
Not for publication yet. Please don't merge: I'll make the publish call after the open items below.
What this adds
A Veterans Day post (dated 2026-11-11) on how much state income tax military retirees owe on their retired pay in each state in 2026, for two couples, plus a table of other veteran rules PolicyEngine models.
The article is generated. PolicyEngine/veterans-day-2026 holds the template (
post/template.md), the renderer (scripts/render_post.py) and the PolicyEngine-US runs it reads, so every number and chart in the article comes from that repo'soutputs/. Edit the template there and re-render; don't hand-edit the article.Plan
stateMap,bar), checked againstparseBlogChartSpec's rulespost/cover_prompt.md)[[TODO]]markers: the lead's state count, the release version and the calculator link🤖 Generated with Claude Code