Skip to content

Apply Virginia's rules for a filer who can be claimed as a dependent - #10091

Merged
MaxGhenis merged 29 commits into
mainfrom
claimable-filer-va
Oct 18, 2026
Merged

MaxGhenis merged 29 commits into
mainfrom
claimable-filer-va

Conversation

@MaxGhenis

@MaxGhenis MaxGhenis commented Oct 11, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Virginia limits the standard deduction of a filer who can be claimed as a dependent to earned income, ties personal exemptions to those allowable federally, and bars a dependent's return from its EITC alternatives. The model applied none of these, and it also gave the $800 aged/blind exemption to aged or blind dependents.

Builds on #10024 (which bars the low-income credit when either spouse can be claimed) and the federal claimable-filer PR #10087, both now merged into main.

Formula Rule now Source
va_standard_deduction When either filer can be claimed, the deduction is the lesser of the status amount and the filers' earned income (no floor). Earned income is the model's earned_income (wages and net self-employment earnings), with each filer's loss floored at zero Va. Code 58.1-322.03(1)(b): computed "only with respect to earned income"; 760 instructions p.19: "limited to the amount of your earned income"; one joint taxable income under 58.1-324(B)(1)
va_personal_exemption_person $930 for each filer who cannot be claimed, and for dependents unless a filer can be claimed and the filing exception does not apply. The dependent exemption reform's va_personal_exemption keeps the same eligibility (its dependent amount and phaseout stay configurable) 58.1-322.03(2)(a): "each personal exemption allowable to the taxpayer for federal income tax purposes"; IRC 151(d)(2), 152(b)(1); 760 instructions: "the same number of dependent exemptions allowed on your federal return"
va_aged_blind_exemption_person Aged or blind filers only (dependents no longer count); claimability does not matter 58.1-322.03(2)(b): "Each blind or aged taxpayer"
va_low_income_tax_credit_eligible Unchanged in effect: a blind or aged dependent still bars the credit. That came from counting dependents in the aged and blind exemption; it is now an explicit condition 58.1-339.8(D)(4): no credit when "any person claimed as a dependent ... claims" the additional exemption for blind or aged taxpayers "on his or their income tax return"
va_refundable_eitc_if_claimed, va_non_refundable_eitc_if_claimed $0 when either filer can be claimed 58.1-339.8(B)(1): "shall not be allowed against such tax of a dependent"; matches the low-income credit

Not changed: the spouse tax adjustment, age deduction and 2022-2024 rebates have no claimable-filer rule. The contributed state dependent-exemption repeal reform (repeal_state_dependent_exemptions) is not fixed here: its overrides still give a claimable filer the $930 exemption. A separate branch (repeal-state-dep-exemptions-claimable-filer) is changing them; that work is pending and must read the "can be claimed" input.

Readings for Max (queue via the US + core hub)

  1. Standard deduction, one claimable spouse. This PR caps the whole joint deduction at the couple's earned income (one joint taxable income). Alternatives: per-spouse halves ($10,750 in the test household instead of $12,000), or a cap only when both are claimable ($17,500).
  2. Own $930 exemption of a claimable filer. Denied here through the statute's federal link. Virginia Tax's web page says "Each filer is allowed one personal exemption", which would keep it ($930 more per claimable filer).
  3. EITC alternatives, one claimable spouse. Whole joint return barred, like the low-income credit; no allocation rule exists for the alternative.
  4. EITC alternatives: can be claimed or is claimed. Virginia Tax's guidance on the credits says "claimed as a dependent"; the statute bars the credit "against such tax of a dependent", and Virginia follows federal definitions. This PR reads the "can be claimed" input for the credits. Reading the "is claimed" input is the alternative. (The standard deduction is not in question: the statute and the instructions both use "can be claimed".)

Known limits of the inputs

  • A dependent's own return. Va. Code 58.1-339.8(D)(4) bars the low-income credit when a dependent claims the additional exemption for blind or aged taxpayers on their own return. The model has no input for a dependent's own return, so a blind or aged dependent is taken to claim it (as before this PR). Assuming no such claim would allow a $600 credit in a two-person household under the poverty line.
  • Earned income. 23VAC10-110-143 counts wages, salaries, professional fees and other pay for services. The model's earned_income also includes self-employment amounts that are not pay for services (for example equipment-deduction recapture); the model does not separate them.

Which fact each rule reads (#10024 separates them): the standard deduction limit, the filer's own exemption and the EITC alternatives read whether a filer can be claimed; dependents' exemptions read whether a filer can be claimed and the filing exception does not apply (Pub. 501), so a filer within the exception keeps the dependents' $930 but not their own.

Invariants

  1. Swap invariance of every changed output under either head/spouse labelling.
  2. Monotonicity. Marking another filer as claimed never raises any changed output.
  3. Unchanged when no filer can be claimed (a filer who can be claimed but is not claimed does trigger these rules), except the aged/blind exemption, which no longer counts dependents (the low-income credit's bar for a blind or aged dependent is kept).

Tests

  • YAML: variable-named cases for every changed formula. Each joint case with a claimable spouse appears under both head/spouse labellings, with person-level checks of which spouse keeps the personal exemption. Run locally at 77022436b2: the changed YAML files and the test folders next to every changed variable (45 files): 247 passed, 0 failed.
  • Property test policyengine_us/tests/core/test_claimable_filer_va_invariants.py for 2023, 2025 and 2026, on tax-unit totals. Hypothesis batches check invariant 1; a seeded population checks 1 and 2. Invariant 3 is checked by the microsimulation below, where no filer is claimed. 4 tests passed, 0 failed, in 20 s with a peak memory footprint of 1.1 GB (/usr/bin/time -l).

Hub microsimulation impact (current head)

A real microsimulation on the default dataset, main at the merge base 13eddbfaaf against this PR's head 50fb063e88, for 2025 and 2026. The runs went one at a time under the shared heavy-job lock. Sums are weighted.

Output 2025 change 2026 change 2025 records changed (weighted) 2026 records changed (weighted)
va_income_tax +159,716 +160,857 2 (3,472) 2 (3,497)
va_low_income_tax_credit +0 +0 0 (0) 0 (0)
va_eitc +0 +0 0 (0) 0 (0)
va_standard_deduction +0 +0 0 (0) 0 (0)
va_personal_exemption +0 +0 0 (0) 0 (0)
state_income_tax +159,716 +160,857 2 (3,472) 2 (3,497)
income_tax +0 +0 0 (0) 0 (0)
household_net_income -159,716 -160,857 2 (3,472) 2 (3,497)
household_benefits +0 +0 0 (0) 0 (0)

The change comes from va_aged_blind_exemption_person. It now gives Virginia's aged and blind exemption only to a filer (head or spouse), as Va. Code 58.1-322.03(2)(b) grants it to "each blind or aged taxpayer". Main also gave it to aged or blind dependents, so units with such a dependent lose that exemption and pay more Virginia tax: 2 records in each year. The PR's claimability rules can't change any record on the default dataset, which has no claimed_as_dependent_on_another_return input.

Comparison files are in fixes/10091-impact/ on the hub host.

Microsimulation impact

Real microsimulations on the default dataset (hf://datasets/policyengine/populace-us/populace_us_2024.h5@populace-us-2024-spm-20260909) for 2025 and 2026, compared record by record. In that dataset no person can be claimed as a dependent on another return (claimable_as_dependent_on_another_return is true for 0 of 166,321 people), so every rule gated on it is inactive there; the runs check that nothing else moves.

This stack's federal branch (35a2cbcbb9) against a local merge of the four state branches onto it (13d24ac157). Each state branch changes only its own state's variables, so the comparison is split by state.

  • 2025:
Variable (weighted total) Base This change Difference Records changed (weighted)
household_net_income (Virginia households) n/a n/a -159,716 2 (3,472)
va_aged_blind_exemption $1,259,102,307 $1,256,324,516 -2,777,791 3 (3,472)
  • 2026:
Variable (weighted total) Base This change Difference Records changed (weighted)
household_net_income (Virginia households) n/a n/a -160,857 2 (3,497)
va_aged_blind_exemption $1,268,093,692 $1,265,296,064 -2,797,628 3 (3,497)

What changes: three tax units with a blind dependent (aged 22, 44 and 61) no longer get that dependent's $800 aged/blind exemption, which Va. Code 58.1-322.03(2)(b) gives only to "each blind or aged taxpayer". Their Virginia tax rises by $46 (or stays $0). No low-income credit changes: the bar for a blind or aged dependent is kept.

Axiom parity

axiom: us-va/statutes/58.1/58/1-322/03(1)(b) queued (VA1: TheAxiomFoundation/rulespec-us#1692) | us-va/statutes/58.1/58/1-322/03(2)(a) queued (VA1: TheAxiomFoundation/rulespec-us#1692) | us-va/statutes/58.1/58/1-322/03(2)(b) queued (VA1: TheAxiomFoundation/rulespec-us#1692) | us-va/statutes/58.1/58/1-339/8 queued (VA1: TheAxiomFoundation/rulespec-us#1692) | Virginia dependent-exemption reform n/a: reform-only implementation preserves baseline eligibility; no additional Axiom consequence

Every queued item is a pe-parity issue filed in TheAxiomFoundation/rulespec-us on 2026-10-12 (verbatim law, required outputs, review finding, companion tests).

Merge with main after #10087

Merged main (13eddbfaaf) after #10087 with a merge commit. Took main's reviewed versions of nm_medical_expense_credit.py, nm_medical_expense_credit.yaml, and ca_cdcc_relevant_expenses.yaml; this branch had not changed them since its federal base. Retained this PR's explicit aged/blind-dependent bar and added cases in va_low_income_tax_credit_eligible.py and va_low_income_tax_credit_eligible.yaml, since main matched their federal-base versions. Preserved main's deletion of the two consumed federal changelog fragments.

The diff against main is byte-for-byte identical to the original Virginia-only diff, 35a2cbcbb9..77022436b2 (16 files).

Validation: all eight changed test files passed (75 tests, 0 failures), run one file per process with the required thread caps. Ruff 0.15.5 format/check passed on all eight changed Python files; make format passed without changes.
Merged current main (5ec60b209a) and split the Virginia exemption reform tests by reform combo: exemption_reform_test.yaml (6 cases, 5 combos) and exemption_reform_claimable_filer_test.yaml (4 cases, 1 combo), preserving all 10 cases unchanged and keeping each file within the 5.0 per-file budget. The reform-combo budget check and both resulting YAML files passed.

🤖 Generated with Claude Code

MaxGhenis and others added 26 commits October 8, 2026 11:03
The federal standard deduction and 17 state formulas read only whether the
tax-unit head is claimed elsewhere, so a joint return where one spouse can be
claimed was taxed differently depending on which spouse was labelled head.
Each formula now applies its jurisdiction's rule for that case (either spouse,
single filers only, per spouse, or only when every filer is claimed), using
two new label-independent helpers. Adds swap-pair YAML cases and a Hypothesis
property test.

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

The New Mexico, Maine and Hawaii renters gates counted filers who are not
claimed elsewhere, so a tax unit with neither a head nor a spouse (252 in
the default dataset) looked like one whose every filer was claimed. A new
helper, every_filer_is_dependent_elsewhere, requires a claimed filer and no
unclaimed one.

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

- Hawaii's dependent standard deduction uses earned income net of the
  deductible part of self-employment tax, as the N-11 worksheet does.
- New Mexico's medical care credit needs a filer who is both 65 or older
  and not a dependent when a filer is a dependent elsewhere (NMSA 7-2-18.13).
- The federal EITC without a qualifying child requires that no filer can be
  claimed as a dependent (IRC 32(c)(1)(A)(ii)(III), Publication 596), so
  Missouri's working family credit no longer reaches such a couple.
- Hawaii's food/excise credit keeps minor children receiving public support
  (HRS 235-55.85(c)) on a joint return where one spouse can be claimed.
- Comments label the readings the law does not settle, and the property
  test covers the EITC and the food/excise exemption amount.

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

- The federal and Oregon dependent worksheets use earned income net of the
  deductible part of self-employment tax, as Hawaii's now does.
- Hawaii's food/excise minor-child count excludes children who can be
  claimed by another taxpayer and the filers themselves (Form N-311 line 3).
- claimed_as_dependent_on_another_return documents what it stands for: a
  §151 deduction for the person is allowable to another taxpayer, so a
  person whose would-be claimer files only for a refund is not one
  (Publications 501 and 596); rules on actually being claimed read it too.
- Hawaii's renters comment labels the mixed joint reading as an inference;
  the Hawaii dependent threshold cites HRS 235-2.4(a)(3) on its page.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A filer who can be claimed on another return is treated as having no
dependents (IRC 152(b)(1); on a joint return either spouse counts) and has no
personal exemption (IRC 151(d)(2)); one who is claimed gets no education
credits (25A(g)(3)), student loan interest deduction (221(c)) or recovery
rebate (6428(d)(2), 6428A(d)(2), 6428B(c)(2)). The model read none of these.
Now the child tax credit and credit for other dependents, the under-13 child
and dependent care qualifying person, exemptions_count and its RI, DE, OH, OR,
WI, HI and NM readers, the recovery rebates, the education credits and the
student loan interest deduction apply them symmetrically for joint returns.
Georgia keeps its own counts; the HI, WI and Treasury exemption reforms
follow the corrected count.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- The standard deduction of a filer who can be claimed is computed "only with
  respect to earned income" (Va. Code 58.1-322.03(1)(b)); on a joint return
  either spouse being claimable caps the joint deduction at the couple's
  earned income.
- Personal exemptions count only filers who cannot be claimed and, when no
  filer can be, the dependents (58.1-322.03(2)(a), IRC 151(d)(2), 152(b)(1)).
- Aged and blind exemptions go to aged or blind filers, not dependents, and
  survive claimability (58.1-322.03(2)(b)).
- Both Virginia EITC alternatives bar a return on which either spouse can be
  claimed, as the low-income credit already does (58.1-339.8(B)(1)).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Child and dependent care: childcare expenses do not count on a return with a
  claimable filer unless a child under 13 still qualifies (IRC 21(b)(2)(A)(ii)).
- Tuition and fees deduction: not allowed to a filer who can be claimed (IRC
  222(c)(3)), so the education credit bar no longer makes such a filer eligible.
- Recovery rebates: the Armed Forces exception waives the identification rule
  only, not the exclusion of a spouse who is another taxpayer's dependent.
- Georgia: the contributed refundable credit and SB 520 reforms count the same
  children as ga_ctc_potential through a new ga_ctc_eligible_child.
- Education credits and student loan interest read the claimed input directly,
  since IRC 25A(g)(3) and 221(c) turn on an actual claim.
- One reference per source document; quote IRC 24(h)(4)(A) exactly.
- Tests: mixed-recipient care, tuition deduction, military rebates, Georgia
  refund cap, and the swapped New Mexico rebate case; the property test now
  covers the state readers of the exemption count.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Low-income credit: a blind or aged dependent still bars the credit (Va. Code
  58.1-339.8(D)(4)); this came from counting dependents in the aged and blind
  exemption, which now goes to filers only.
- Standard deduction: document the earned income measure used for the limit.
- EITC alternatives: cite 58.1-339.8 and the instructions page with the
  dependent bar.
- Tests: blind and aged dependents, person-level personal exemptions, and the
  aged exemption under both labellings.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
# Conflicts:
#	policyengine_us/tests/policy/baseline/gov/states/oh/tax/income/exemptions/personal/oh_personal_exemptions_eligible.yaml
#10024 now separates three facts: is claimed, can be claimed, and the would-be
claimant's filing exception.

- IRC 152(b)(1) gates (child tax credit, credit for other dependents, under-13
  care child and its expenses, dependents in exemptions_count, ARPA dependents,
  Ohio dependents, the Hawaii and Wisconsin reforms) read
  head_or_spouse_is_dependent_elsewhere_without_filing_exception, so a filer
  within the Publication 501 exception keeps their dependents.
- Own exemptions, recovery rebates and the tuition deduction read claimability.
- Education credits and student loan interest keep reading the claimed input.
- Tests: the filing exception and a filer who can be claimed but is not.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Dependents' exemptions read the claimable-and-not-within-the-filing-exception
helper; the filer's own exemption, the standard deduction limit and the EITC
alternatives read claimability.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
#10024's food/excise credit, Act 115 rebate and renters credit took claimable
filers off exemptions_count themselves. exemptions_count now leaves them out
(and, outside the filing exception, the return's dependents), so those credits
read it as it is; the filing-exception cases were one exemption short.

The renters credit also leaves out a dependent who can be claimed by another
taxpayer (Schedule X counts only people who cannot be), as the food/excise
credit already did.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Education credits: a dependent student is not eligible on a return whose
  filer can be claimed outside the filing exception (IRC 25A(f)(1)(A)(iii),
  152(b)(1)); the filer's own eligibility still turns on an actual claim.
- Recovery rebates: no credit when every filer is a dependent of another
  taxpayer (IRC 6428B(a)); the CARES and CAA child prerequisite is a spouse
  with a valid SSN, whether or not that spouse is an eligible individual.
- Child and dependent care: cdcc_qualifying_childcare_expenses holds the
  expense rule, and the single-parent work requirement reform and California's
  expenses read it.
- References: Georgia HB 136 page 3; one entry per recovery rebate statute;
  quote IRC 24(h)(4)(A) exactly in the test comment.
- Tests: dependent students, the two rebate cases, the reform and California
  expenses, and the Hawaii, Wisconsin and Treasury reforms with a claimable
  filer under both labellings.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The reform recomputed personal exemptions from filing status and structural
dependents; it now leaves out a filer who can be claimed and, outside the
claimant filing exception, that return's dependents, as the baseline does.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Education credits: is_barred_from_education_credits_by_dependency holds the
  claimed-filer and dependent-student rules; both eligibility formulas and the
  reconciliation SSN reform's Lifetime Learning Credit read it, so the reform
  no longer turns a barred student's tuition into that credit.
- Child and dependent care: childcare counts when any child under 18 is still a
  qualifying individual, so an incapacitated child aged 13 to 17 keeps it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Setting meets_eitc_identification_requirements on one person made it an input
for every person, so the other spouse lost their SSN too.

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

Copy link
Copy Markdown
Contributor Author

Hand-off to the US + core hub

  • Head: 77022436b2
  • Independent review: APPROVE at f5f0b31999 (GPT-6.1 Sol, round 3). The current head only merges the reviewed federal head 35a2cbcbb9 into it; this PR's own diff is byte-identical to the reviewed one. Verdict file: ~/reviews/us-hub/claimable-filer-rules/reviews/r3/out-va.md.
  • Passed locally: 45 YAML files: 247 passed, 0 failed; property test 4 passed. Also: a sweep of every YAML file in the repo that sets a dependent-elsewhere input (115 files) on a merge of all five branches, 0 failed; microsimulations for 2025 and 2026 (details in the PR body).
  • Depends on: Apply the federal rules for a filer who can be claimed as a dependent #10087 and Make rules for a filer claimed elsewhere independent of which spouse is labelled head #10024. A branch with Virginia's credit exclusions (va-credit-exclusions-d) is stacked on this one and rewrites va_low_income_tax_credit_eligible; it must keep this PR's blind/aged-dependent bar.

Pending (not mine to do):

Follow-ups: listed in #10087 under "Follow-ups"; the hub holds the regional state PRs stacked on the federal branch.

Session local_0143a3e8-4ab1-4492-8aab-9140b74e67e5 is closing; the hub owns this PR from here.

Base automatically changed from claimable-filer-federal to main October 16, 2026 06:10
Keep reviewed main versions of the shared NM and CA credit files. Preserve the Virginia low-income eligibility changes and tests, and retain main deletions of consumed federal changelog fragments. The main-relative diff exactly matches the original Virginia-only diff.
@MaxGhenis MaxGhenis closed this Oct 16, 2026
@MaxGhenis MaxGhenis reopened this Oct 16, 2026
@MaxGhenis
MaxGhenis marked this pull request as ready for review October 16, 2026 20:01
@codecov

codecov Bot commented Oct 16, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 100.00%. Comparing base (909176a) to head (0fdbf8f).
⚠️ Report is 519 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff            @@
##              main    #10091   +/-   ##
=========================================
  Coverage   100.00%   100.00%           
=========================================
  Files            4         6    +2     
  Lines           76        98   +22     
  Branches         2         0    -2     
=========================================
+ Hits            76        98   +22     
Flag Coverage Δ
unittests 100.00% <100.00%> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@MaxGhenis
MaxGhenis merged commit 7ba709e into main Oct 18, 2026
29 checks passed
@MaxGhenis

Copy link
Copy Markdown
Contributor Author

US + core hub merge audit, us#10091 at 0fdbf8f33a9ed808ad9989eff4db33160407076a (squash): Apply Virginia's rules for a filer who can be claimed as a dependent.

@MaxGhenis
MaxGhenis deleted the claimable-filer-va branch October 18, 2026 19:51
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.

1 participant