Repository navigation
Apply Hawaii refundable credits before nonrefundable credits - #10202
Merged
Merged
Conversation
Form N-11 subtracts refundable credits (line 33) from tax (line 27) to get the adjusted tax liability (line 34), and limits nonrefundable credits (line 35) to it. The model capped nonrefundable credits at gross tax, which overstated the benefit when a filer had both kinds of credit. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Replace the dead 2018 Form N-356 link with its archived copy and register the dead 2018-2021 N-356 links; cite the 2018 and 2022 N-11 in hi_non_refundable_credits; move the household cases into integration.yaml and say that line 27 comes from the rate schedule; guard against a credit in both Hawaii lists; add a computed wage ladder that must reach the line 34 limit. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis
marked this pull request as ready for review
October 13, 2026 15:04
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #10202 +/- ##
=========================================
Coverage 100.00% 100.00%
=========================================
Files 4 4
Lines 76 56 -20
Branches 2 2
=========================================
- Hits 76 56 -20
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:
|
The 2019 Wayback capture of the 2018 N-356 now redirects to a 2023 404 capture, so cite the 2019 form (same line 10 wording) and drop the 2018 entry from the dead-URL registry. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Contributor
Author
|
Merge audit (head 5172088):
🤖 Generated with Claude Code |
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.
What this fixes
Hawaii applies refundable credits before nonrefundable ones. HRS § 235-91.5 (L 2010, c 21): refundable credits "shall be used first, followed by nonrefundable tax credits". Form N-11 has the same order in every year from 2018 to 2025:
The instructions (2022 p.21, 2025 p.21, 2018 p.25): "the total of the nonrefundable credits used cannot be greater than your adjusted tax liability. If line 34 is zero or less, nonrefundable tax credits may not be used." Form N-356 (the 2018–2022 nonrefundable Hawaii EITC), lines 10–13, limits that credit to the same amount. The 2018–2019 forms say "the amount from Form N-11, line 34"; the 2020–2022 forms say "Adjusted Tax Liability — Enter the amount from Form N-11", which is the label N-11 gives line 34.
The model capped nonrefundable credits at line 27 (gross tax) and then subtracted refundable credits. A filer with both kinds of credit got too much. Example: 2022, tax $1,000, Hawaii EITC $800, refundable credits $500. Form N-11 gives line 34 = $500, line 35 = $500 and line 36 = $0. The model gave −$300.
Change
hi_adjusted_tax_liability(N-11 line 34):hi_income_tax_before_non_refundable_credits − hi_refundable_credits. The 2021 Act 115 refund is excluded when it is in the refundable list. The department paid that refund to people who filed a 2021 N-11 (Ann. 2022-03 p.2), and it is not on lines 28–32.hi_non_refundable_creditscaps the ordered credits athi_adjusted_tax_liability, not gross tax.hi_eitccaps athi_adjusted_tax_liabilitywhile it is nonrefundable (N-356 line 10). It decides that from whetherhi_eitcis ingov.states.hi.tax.income.credits.non_refundable, replacing a hardcodedyear >= 2023, which gives the same baseline result in every year. With the old year test, a reform that made the EITC refundable before 2023 would loop: hi_eitc → line 34 → refundable credits → hi_eitc.hi_income_tax_before_refundable_creditsandhi_income_taxare unchanged. Line 35 ≤ max(line 34, 0) ≤ line 27, sohi_income_tax = hi_income_tax_before_refundable_credits − hi_refundable_creditsis exactly line 36 (less any Act 115 refund). The household-level lists (state_income_tax_before_refundable_credits,state_refundable_credits,state_non_refundable_credits,household_tax_before_refundable_credits,household_refundable_credits,household_refundable_state_credits) therefore stay consistent with no edits. Federal SALT readshi_withheld_income_tax, which does not depend on this chain.Invariants
For tax T (line 27), refundable credits R (Act 115 refund A in 2021), and nonrefundable potential N:
hi_adjusted_tax_liability= T − (R − A).hi_non_refundable_credits= min(N, max(T − (R − A), 0)).hi_income_tax= line 36 − A =hi_income_tax_before_refundable_credits−hi_refundable_credits=state_income_tax.hi_income_tax= T − R.hi_income_tax≤ T − R.hi_income_taxby between 0 and d. A larger federal EITC never raises it.policyengine_us/tests/test_hi_credit_ordering.pychecks all six with Hypothesis and a boundary grid for every year from 2018 to 2025 (tax at, one below and one above R − A and R − A + N). A third test checks 1–3 on computed households (wages, rent, children) for 2021, 2022 and 2025.Tests
hi_adjusted_tax_liability.yaml: line 34, a negative line 34, the 2021 Act 115 exclusion, and no exclusion in 2022.hi_non_refundable_credits.yaml: the review example (2022: $0, not −$300); refundable credits above, equal to and below tax; the refundable 2025 EITC; and a 2025 case that makes the EITC nonrefundable through inline parameters.integration.yaml, three new cases: a single filer aged 30 with $8,000 of wages, worked through N-11 lines 26–36 for 2021, 2022 and 2025. Line 27 comes from the rate schedule, as everywhere in the model, not the Tax Table. In 2022, line 27 = $105.792, line 33 = $100, line 34 = $5.792, line 35 = min($112, $5.792) and line 36 = $0. Main gives −$100.hi_non_refundable_credits.yamland the integration cases fail. The 3 that pass are the ones the ordering does not move. Thehi_adjusted_tax_liability.yamlcases test the new variable.test_credit_lists_do_not_overlapchecks that no credit is in both Hawaii lists from 2015 to 2035. Such a credit would now raise aCycleErrorthrough line 34; on main it was counted twice.test_computed_wage_ladder_reaches_the_line_34_limitruns $0–$40,000 wage ladders for 2021 and 2022 and must reach all three cases: line 34 at or below zero, the credit cut to line 34, and the credit used in full.test_hi_credit_ordering.py(14 tests) runs in theremainingRest group. Locally at load ~65 (macOS): 18.1 s of pytest time, 90 s wall including the model import, and 2.1 GB peak RSS for the whole process. The slowest case is the Hypothesis computed-household test at 6.6 s. It builds no extra tax-benefit system.household_state_income_tax.yaml,abolish_federal_income_tax.yaml, the property tests and the code-health guards (reference URLs, known dead URLs, Rest groups, aggregate lists, nonrefundable-credit consumers).hi_claim_of_right_credit_appliesis an input.Impact
Under current law Hawaii has no nonrefundable credit from 2023 (
non_refundableis[]), so the fix changes nothing in 2023 and later. The default dataset holds 2024 records, so a 2018–2022 run reads zero inputs. Both sides of a full-population pair therefore ran 2024 data with the Hawaii EITC treated as nonrefundable at the 20% match it had in 2018–2022. Every other 2024 parameter, including the 2023+ food/excise amounts, stays at its 2024 value. This is "2022 EITC rules on 2024 data", not the 2022 impact.hi_income_tax,state_income_tax)hi_non_refundable_creditshi_refundable_credits, federalincome_tax,household_benefitshousehold_net_incomeUnder this reform main's
hi_eitcis uncapped in 2024, because main testsyear >= 2023; it caps the credit only insidehi_non_refundable_credits. Sohi_eitcitself falls by $26.6M (83 records) between the two sides, but that is not a change in tax. The tax change is thehi_non_refundable_creditsrow. Base 2f3053c, PR d8e37f8. Output:~/reviews/us-hub/fixes/10202-impact-cf2022eitc/compare.2024.json.Current law, 2025 (full population; base 2f3053c, PR f8b79a4, the same formulas as the final head): 0 records changed in
hi_income_tax,hi_income_tax_before_refundable_credits,hi_non_refundable_credits(base $0),hi_refundable_credits,hi_eitc,state_income_tax,income_tax,household_net_incomeandhousehold_benefits. Output:~/reviews/us-hub/fixes/10202-impact/compare.2025.json.Pre-existing issues found (not fixed here)
Parameter backdating makes the model pay the Act 115 refund ($300/$100 per exemption) in every year from 2015 to 2020. It also pays the 20% Hawaii EITC in 2015–2017, although N-356 says the credit applies to tax years beginning after December 31, 2017. This PR treats both the same way it treats the real credits, so it neither fixes nor worsens them. #10205 fixes them. Merged locally with #10205, all 533 Hawaii YAML cases pass, as do both PRs' property tests (31). The two PRs touch no common file.
axiom: us-hi/statute/235-91.5 encoded-correct. rulespec-us
us-hi/policies/income_tax/resident_core_liability_pipeline.yaml(hi_pit_2026_total_refundable_credits,hi_pit_2026_profile_candidate_net_income_tax_liability) uses refundable credits first; its companion testsigned_negative_final_when_refundable_credit_exceeds_taxcovers it. Axiom covers TY2026, where Hawaii has no nonrefundable credit in its supported profile (a claimed nonrefundable or carryforward credit fails closed), so the line-34 cap never binds there. The 2018–2022 nonrefundable EITC predates Axiom's coverage.Review. Independent review (Opus 5.5 lane,
subfleet run --task review --tier hard, at d8e37f8): APPROVE, with two should-fixes and seven nits, all addressed in 4ef0258:known_dead_reference_urls/west.toml;integration.yamlwith the rate-schedule wording;hi_non_refundable_credits;The review verified the order on every N-11 from 2018 to 2025, Schedule CR (2018, 2022, 2025), N-356 and Ann. 2022-03, and ran the tests. A delta review (GPT-6.1 Sol) of d8e37f8..4ef0258 asked for one change: the archived 2018 N-356 now redirects to a 2023 404 capture. 5172088 cites the archived 2019 N-356 instead (same line 10 wording, "the amount from Form N-11, line 34") and drops the 2018 entry from the dead-URL registry. A re-check at 5172088: APPROVE. Reviews:
~/reviews/hi-credit-ordering-2026-10/review-1.md,review-2-delta.md,review-3-delta2.md.🤖 Generated with Claude Code