Repository navigation
Conversation
O.C.G.A. 48-7-27(a)(16) and (17) subtract qualified overtime and cash tips from the taxpayer's federal AGI. A dependent's tips and overtime are the dependent's own income (26 U.S.C. 73(a)), not in the filer's federal AGI, so ga_cash_tip_exclusion and ga_qualified_overtime_exclusion now mask dependents with ~is_tax_unit_dependent, the mask irs_gross_income uses. Adds YAML cases in variable-named test files and a Hypothesis invariant test (dependents' amounts never change the exclusions or GA tax; a numpy differential over head and spouse; per-filer bounds). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #10405 +/- ##
=========================================
Coverage 100.00% 100.00%
=========================================
Files 4 2 -2
Lines 76 32 -44
Branches 2 0 -2
=========================================
- Hits 76 32 -44
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:
|
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
ga_cash_tip_exclusionandga_qualified_overtime_exclusionsummedtip_incomeandfsla_overtime_premiumover every tax-unit member, dependents included. Both are Georgia AGI subtractions for 2026-2028 (parameters/gov/states/ga/tax/income/subtractions/subtractions.yaml). A dependent's tips and overtime are the dependent's own income and never enter the filer's federal AGI:irs_gross_incomemasks dependents with~is_tax_unit_dependent. So a parent's Georgia AGI fell by tips and overtime that were never in it.This is the Georgia sibling of #10396, which fixes the same defect in the federal tips and overtime deductions (26 U.S.C. 224 and 225).
Probe, TY2026: a Georgia head of household with $60,000 of wages and a 17-year-old dependent with $6,000 of tips (Treasury tipped occupation code 102) and $1,000 of overtime premium.
c5837fb00bga_cash_tip_exclusionga_qualified_overtime_exclusionga_agiga_income_taxA joint return where the head has $4,000 of tips, the spouse $1,000 of overtime and a dependent $6,000 of tips and $1,000 of overtime goes from 3,500 / 2,000 to 1,750 / 1,000. A joint return without dependents is unchanged.
Law
So the subtraction belongs to amounts in the taxpayer's own federal AGI: the taxpayer's, and on a joint return the spouse's. A dependent's tips and overtime go on the dependent's own return, where the dependent can take the exclusion (a case below).
What the PR checked and leaves alone:
Fix
Each formula multiplies the person's amount by
~person("is_tax_unit_dependent", period), the maskirs_gross_incomeuses and the one #10396's review settled on (rather than a head-or-spouse test, which the role inference can disagree with). The AL HB527 contrib reform's overtime deduction already masks dependents this way.Invariants
Stated for every input and tested in
policyengine_us/tests/core/test_ga_tip_overtime_exclusion_dependent_invariants.py. Hypothesis draws batches of Georgia tax units (single, head of household with dependents, joint with and without dependents), and a seeded population of 150 units adds breadth. Each batch runs as one simulation twice: with the dependents' tips, occupation codes and overtime as drawn, and with them zeroed.ga_subtractions,ga_agi,ga_taxable_incomeorga_income_tax.The seeded test also asserts that at least 10 of its units have dependents whose amounts the old all-member sum would have counted, so 1 and 2 aren't vacuous.
Tests
New YAML cases in the variable-named files
ga_cash_tip_exclusion.yamlandga_qualified_overtime_exclusion.yaml. In each: a dependent's amount with explicit roles, the same with roles left to inference, a joint return with a dependent (only the spouses' capped amounts count), and a 17-year-old filing their own return, who keeps the exclusion.Local runs at head
ce5c4d14b5, each file in its own process under the hub heavy lock. "Main's formulas" is a copy of this branch with only the two variable files taken from mainc5837fb00b, to confirm the new tests catch the defect.ga_cash_tip_exclusion.yaml(new)ga_qualified_overtime_exclusion.yaml(new)test_ga_tip_overtime_exclusion_dependent_invariants.py(new)ga_hb463_integration.yamlgov/states/ga/tax/income/integration.yamltests/policy/baseline/gov/states/gaImpact
These are real microsimulation runs on the default dataset for 2026, 2027 and 2028, the years the exclusions apply. They compare main at the merge base
c5837fb00bwith this PR's headce5c4d14b5. The runs went one at a time under the shared heavy-job lock (hubimpact_queue.sh). Sums are weighted; records are tax units, and households for net income.ga_cash_tip_exclusionga_qualified_overtime_exclusionga_subtractionsga_agistate_income_taxincome_taxhousehold_net_incomehousehold_benefitsComparison files:
fixes/10405-impact/(compare.<year>.json,heads.txt) on the hub host.axiom: us-ga:statutes/48/48-7-27 TheAxiomFoundation/rulespec-us#1885 queued
Review
GPT-6.1 Sol (Subfleet job
20261023-072022-ga10405-r1) reviewed headce5c4d14b5againstc5837fb00b: VERDICT: APPROVE, with no findings. It checked:irs_gross_incomein each.🤖 Generated with Claude Code