Skip to content

Use the VA 100% service-connected rating flag where the law asks for a VA rating - #10768

Open
hua7450 wants to merge 2 commits into
PolicyEngine:mainfrom
hua7450:veteran-total-disability-rating
Open

hua7450 wants to merge 2 commits into
PolicyEngine:mainfrom
hua7450:veteran-total-disability-rating

Conversation

@hua7450

@hua7450 hua7450 commented Nov 9, 2026 •

Copy link
Copy Markdown
Collaborator

Fixes #10767

What and why

Four rules turn on a VA disability rating, but the model read a different input. Each now reads is_fully_disabled_service_connected_veteran, the model's flag for a 100% service-connected VA disability.

Rule Law Before After
Medicaid work requirement, veteran exclusion 42 CFR 435.554(c)(4): "a veteran with a temporary or permanent disability from the Department of Veterans Affairs, rated as 100 percent (total) under 38 U.S.C. 1155", implementing clause (IV) of Pub. L. 119-21 sec. 71119 (139 Stat. 312) is_veteran & is_permanently_and_totally_disabled is_fully_disabled_service_connected_veteran
Kansas disabled veteran exemption ($2,320) K.S.A. 79-32,121b(b)(2): "in receipt of disability compensation at the 100% rate, if the disability is permanent and was sustained through military action or accident or resulted from disease contracted while in such active service". The 2023 Form K-40 instructions print the same test is_permanently_and_totally_disabled * is_veteran is_fully_disabled_service_connected_veteran & is_permanently_disabled_veteran
Hawaii LIHEAP disabled-member point Policies and Procedures 2020: "Veterans receiving VA benefits for a 100% service-connected disability according to VA" is_disabled stood in adds is_fully_disabled_service_connected_veteran
SNAP elderly or disabled member (gov.usda.disabled_programs) 7 USC 2012(j)(4)(A): "a service-connected or non-service-connected disability which is rated as total under title 38"; 7 CFR 271.2 adds "or paid as total" is_permanently_disabled_veteran only adds is_fully_disabled_service_connected_veteran and keeps the permanent flag

is_permanently_and_totally_disabled is the tax definition: "unable to engage in any substantial gainful activity" (IRC 22(e)(3)). A VA rating measures "the average impairments of earning capacity" (38 USC 1155), and "Total disability may or may not be permanent" (38 CFR 3.340(a)(1)). So the old Medicaid and Kansas tests missed a veteran rated 100% who still works. They also exempted a veteran whose disability the VA rates below 100% or doesn't connect to service. The old Medicaid test also missed a temporary 100% rating, which 435.554(c)(4) names.

The two VA flags now say what they mean. Both are inputs with only a label, so this PR adds a comment and references to each:

  • is_fully_disabled_service_connected_veteran: the VA rates or pays a service-connected disability at the 100% rate, temporary or permanent, including individual unemployability. The flag was added for Missouri's property tax credit, whose statute says "one hundred percent service-connected, disabled veteran". Its other readers (Missouri, Virginia energy assistance, the CTA pass, Michigan) are unchanged.
  • is_permanently_disabled_veteran: the VA has rated the disability permanent and total, for compensation or for a pension, which requires a permanent and total non-service-connected disability (38 USC 1521(a)). That covers SNAP's non-service-connected half and the Kansas permanence condition.

Example results:

  • A Kansas filer in 2025 with wages of $45,000, compensated at the 100% rate for a permanent disability, gets the $2,320 exemption. Exemptions are $11,480 and tax before credits is $1,581.86 (ks_2025_integration.yaml).
  • A veteran aged 40 with a temporary 100% service-connected rating is now a SNAP elderly or disabled member. That brings the uncapped shelter deduction, the medical deduction and the higher asset limit.

Microsimulation: none of these flags is in the microdata, so aggregate results don't change. The changes affect household calculations, where users set the flags.

Not changed, with comments added where the formula is narrower than the law:

  • North Carolina's medical retirement test (G.S. 105-153.5(b)(5a)) reads is_permanently_disabled_veteran for "Medically retired under 10 U.S.C. Chapter 61". It misses the temporary disability retired list (10 USC 1202). The model has no chapter 61 input.
  • The CTA Military Service Pass covers VA compensation "of 10% or greater". The model has no input for ratings below 100%.
  • Michigan is in Give Michigan's qualified disabled veteran exemption to every veteran with a service-connected disability #10714. Washington's 40% pathway is already noted in wa_pte_categorical_eligible.
  • Kansas's honorable-discharge condition has no input. The Kansas formula no longer reads is_veteran, since the VA flags imply veteran status, and is_veteran defaults to veterans_benefits > 0.
  • Medicaid clause (V) still reads is_disabled and is_ssi_disabled, not is_permanently_and_totally_disabled. A veteran with only the tax flag set is no longer exempt under (IV) (Case 43).

Test plan

  • For policy changes: YAML cases with expected values from the law above. medicaid_work_requirement_eligible.yaml Cases 42-43; ks_disabled_veteran_exemptions_eligible_person.yaml.yaml Case 1 inputs changed, Cases 5-6 new; ks_2025_integration.yaml disabled veteran case and ks_disabled_veteran_exemption_2025.yaml five exemption cases inputs changed, expected values unchanged; hi_liheap_points.yaml Case 17; is_usda_disabled.yaml Case 9.
  • If this PR takes a reading where a statute and a regulation, form, instructions, manual or agency practice disagree: not applicable.
  • make format (ruff format on the changed files)
  • Changelog fragment in changelog.d/

Test suites were not run locally; CI validates. I checked the new and changed cases' values one process at a time.

axiom: TheAxiomFoundation/rulespec-us#2145 queued

🤖 Generated with Claude Code

The Medicaid work requirement's veteran exemption (42 CFR 435.554(c)(4)), the
Kansas disabled veteran exemption (K.S.A. 79-32,121b(b)(2)), Hawaii LIHEAP's
disabled-member point and SNAP's elderly or disabled member (7 CFR 271.2) turn
on a VA rating, but the model read the tax permanent and total disability flag,
is_disabled, or only the permanent VA flag. Document both VA flags, and note the
narrower inputs in North Carolina's medical retirement test and the CTA pass.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The five cases that expect the exemption still set the tax permanent and
total disability flag, which the Kansas formula no longer reads. Set
is_fully_disabled_service_connected_veteran and
is_permanently_disabled_veteran instead; expected values are unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Use the VA 100% service-connected rating flag where the law asks for a VA rating

1 participant