Skip to content

Apply Arkansas HB1001 (2026 1st Extraordinary Session) individual income tax rate cuts#8245

Open
DTrim99 wants to merge 5 commits into
PolicyEngine:mainfrom
DTrim99:ar-hb1001-2026-rates
Open

Apply Arkansas HB1001 (2026 1st Extraordinary Session) individual income tax rate cuts#8245
DTrim99 wants to merge 5 commits into
PolicyEngine:mainfrom
DTrim99:ar-hb1001-2026-rates

Conversation

@DTrim99
Copy link
Copy Markdown
Collaborator

@DTrim99 DTrim99 commented May 7, 2026

Summary

Implements Arkansas HB1001 (2026 First Extraordinary Session) Section 1, which reduces the individual income tax rates effective for tax years beginning on or after January 1, 2026. Closes #8244.

Corporate rate changes in Sections 2–3 of the bill are out of scope for this PR.

Statutory authority

A.C.A. § 26-51-201(a)(4) as amended by HB1001.

Bill schedules

(a)(4)(A) — Net income ≤ $94,700

Bracket Threshold Rate (2026) Rate (2025)
1 $0 0% 0%
2 $5,600 2% 2%
3 $11,200 3% 3%
4 $16,000 3.4% 3.4%
5 $26,400 3.7% 3.9%

(a)(4)(B) — Net income > $94,700

Bracket Threshold Rate (2026) Rate (2025)
1 $0 2% 2%
2 $4,701 3.7% 3.9%

(a)(4)(C) — Bracket adjustment for net income $94,701 – $97,600

A new bracket-adjustment schedule that reduces the (a)(4)(B) tax due by amounts ranging from $290 (at $94,701 – $94,800) down to $10 (at $97,501 – $97,600), in $10 / $100 steps.

Files changed

  • policyengine_us/parameters/gov/states/ar/tax/income/rates/main/rate.yaml — added 2026-01-01 entries; top bracket rate 3.9% → 3.7%.
  • policyengine_us/parameters/gov/states/ar/tax/income/rates/main/reduction.yaml — added 2026-01-01 entries to all 35 active brackets; deactivated 3 brackets that no longer apply.
  • policyengine_us/tests/policy/baseline/gov/states/ar/tax/income/ar_income_tax_before_non_refundable_credits_indiv.yaml — added 10 integration tests covering all 2026 brackets, the (a)(4)(A)/(B) boundary, and the bracket-adjustment range.
  • changelog.d/ar-hb1001-2026-rates.changed.md — changelog fragment.

Reduction-amount derivation

PolicyEngine's AR formula is tax = top_rate * income - reduction. Under the bill's marginal schedule the reduction at high income equals $4,700 × (3.7% − 2%) = $79.90. The reduction at each (a)(4)(C) row is the bill's bracket-adjustment plus this $79.90 base — e.g. $290 + $79.90 = $369.90 at $94,701; $10 + $79.90 = $89.90 at $97,501; $0 + $79.90 = $79.90 at $97,601 and above.

For the (a)(4)(A) brackets the reduction is the cumulative impact of the lower marginal rates: $112 / $224 / $288 / $367.20 at thresholds $5,600 / $11,200 / $16,000 / $26,400 respectively.

Test plan

  • CI passes
  • New 2026 YAML tests verify low-income, mid-income, boundary, bracket-adjustment, and high-income cases
  • Existing 2022 / 2023 tests still pass (no rate or threshold changes for those years)

DTrim99 added 2 commits May 7, 2026 13:40
…x rate cuts

Updates Arkansas individual income tax rates for tax year 2026 per
A.C.A. § 26-51-201(a)(4) as amended by HB1001:

- Top marginal rate: 3.9% -> 3.7% (rate.yaml)
- Bracket thresholds align with bill (a)(4)(A): $5,600 / $11,200 /
  $16,000 / $26,400
- Bracket-adjustment table (a)(4)(C) refreshed for income $94,701 -
  $97,600; high-income (a)(4)(B) tail value updated from $89.30 to
  $79.90 (reflecting $4,700 * (3.7% - 2%))

Closes PolicyEngine#8244
# Conflicts:
#	policyengine_us/parameters/gov/states/ar/tax/income/rates/main/rate.yaml
#	policyengine_us/parameters/gov/states/ar/tax/income/rates/main/reduction.yaml
#	policyengine_us/tests/policy/baseline/gov/states/ar/tax/income/ar_income_tax_before_non_refundable_credits_indiv.yaml
@codecov
Copy link
Copy Markdown

codecov Bot commented May 7, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 70.43%. Comparing base (623a65c) to head (24a9cad).
⚠️ Report is 162 commits behind head on main.

Additional details and impacted files
@@             Coverage Diff              @@
##              main    #8245       +/-   ##
============================================
- Coverage   100.00%   70.43%   -29.57%     
============================================
  Files           12     4737     +4725     
  Lines          173    68915    +68742     
  Branches         4      348      +344     
============================================
+ Hits           173    48541    +48368     
- Misses           0    20374    +20374     
Flag Coverage Δ
unittests 70.43% <ø> (-29.57%) ⬇️

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

☔ View full report in Codecov by Sentry.
📢 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.

@DTrim99
Copy link
Copy Markdown
Collaborator Author

DTrim99 commented May 7, 2026

PR Review

Cross-checked the parameter values against the official HB1001 PDF (Section 1, A.C.A. § 26-51-201(a)(4)) and re-derived the reductions algebraically. The implementation is correct.

Verification

Check Result
(a)(4)(A) brackets & rates ($0/$5,600/$11,200/$16,000/$26,400 at 0/2/3/3.4/3.7%) Match bill
(a)(4)(B) brackets ($0/$4,700 at 2/3.7%) Match bill
(a)(4)(C) bracket-adjustment table — all 30 rows ($94,701→$290 down to $97,501→$10, $97,601→$0) Match bill
Base high-income reduction = $79.90 = 0.037·X − (0.02·4,700 + 0.037·(X−4,700)) Algebraically correct
(a)(4)(A) reduction at $26,400 = $367.20 (cumulative $112 + $144 + $353.60 of lower-rate savings) Correct
All 10 new test outputs Independently re-derived, all match
References in rate.yaml and reduction.yaml metadata Added, point to authoritative bill PDF
Changelog Present, changed type appropriate
CI Passing (only codecov/project soft-fail)

Critical (Must Fix)

None.

Should Address

None.

Suggestions

  1. Boundary discontinuity at $94,700 ↔ $94,701 — the (a)(4)(C) $290 adjustment causes tax to decrease by $2.66 ($3,136.70 → $3,134.04) when crossing the threshold. This is by the bill's design (the adjustment is calibrated to smooth what would otherwise be a ~$287 jump under raw (a)(4)(B)). The boundary tests at $94,700 / $94,701 / $97,600 / $97,601 already cover this, but a brief note in the test file or reduction.yaml description explaining that the slight reverse-step is intentional could help future maintainers.

  2. Optional extra boundary tests — coverage at the exact (a)(4)(A) bracket edges ($5,600, $11,200, $16,000) would round out the new test suite, though existing in-bracket tests already exercise the cumulative reductions.

  3. Pre-existing rounding (out of scope) — the 2025 high-income reduction is $89 but should be $89.30 (analogous to the new $79.90 for 2026). Not introduced by this PR; flagging only because the new value sets a more precise precedent.

Recommendation

Approve. Math, references, and tests are solid.

@DTrim99 DTrim99 marked this pull request as ready for review May 8, 2026 13:56
@DTrim99 DTrim99 requested review from PavelMakarchuk and hua7450 May 8, 2026 13:56
Comment thread policyengine_us/parameters/gov/states/ar/tax/income/rates/main/reduction.yaml Outdated
Addresses review feedback that the reference did not indicate the bill was signed.
Updates the title to "Act 1 of 2026" and adds the Arkansas Legislature bill detail
page as a separate reference, which shows the enactment status.
@DTrim99 DTrim99 requested a review from PavelMakarchuk May 11, 2026 18:58
Copy link
Copy Markdown
Collaborator

@hua7450 hua7450 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Program Review — PR #8245 (Arkansas HB1001 2026 individual income tax rate cuts)

Source Documents

Critical (Must Fix)

None.

Should Address

  1. Test coverage gap — intermediate (a)(4)(C) rows untested: The (a)(4)(C) bracket-adjustment table has 30 rows from $94,701 to $97,501 (plus a $97,601+ catch-all). The PR tests only row 1 ($94,701) and row 30 ($97,501-$97,600), leaving the 28 intermediate rows untested. A typo in any intermediate row would slip through. Suggest 2-3 mid-table spot checks (e.g., $95,500, $96,500, $97,000). — policyengine_us/tests/policy/baseline/gov/states/ar/tax/income/ar_income_tax_before_non_refundable_credits_indiv.yaml

Suggestions

  1. Reference page number polish: Both new HB1001 references use #page=1, but the rate table is on p. 2 and the bracket-adjustment table spans pp. 2-3. Page 1 is just the bill caption. Updating to #page=2 would land readers on the relevant table. Zero functional impact. — rate.yaml, reduction.yaml
  2. Inert (.inf) brackets inconsistent: After the (a)(4)(C) range ends, the next ~14 unreachable .inf brackets in reduction.yaml are not updated for 2026 — they carry forward the old $89 amount from 2025 while the bottom-of-(a)(4)(C) row uses $79.90. Zero functional impact since these brackets are unreachable, but the file is internally inconsistent. Cleanup suggestion. — reduction.yaml
  3. Pre-existing stale subsection in inherited refs (not introduced by this PR): Older references at the top of both YAML files still cite (a)(1)(A), the pre-2024 subsection. Author could refresh while in the file, but not required.
  4. Test case naming inconsistency (cosmetic): 10 new test cases use AR HB1001 2026 - <desc> naming, while existing 2025 cases use Case N, description. style. Not a violation; cosmetic only.

PDF Audit Summary

Category Count
Confirmed correct 40 (all audited 2026-01-01 entries)
Mismatches (code-path confirmed + visually verified) 0
Mismatches rejected (code-path cleared) 0
Unmodeled items 0
Pre-existing issues 1 (stale (a)(1)(A) ref)

Validation Summary

Check Result
Regulatory Accuracy 0 issues — bill correctly reflected
Reference Quality 1 polish (page number)
Code Patterns 2 minor (inert brackets, stale subsection)
Test Coverage 1 medium gap (intermediate (a)(4)(C) rows)
PDF Value Audit 0 mismatches / 40 confirmed
CI Status Mostly passing — 1 pending check, codecov/project fail (likely PR-level threshold, not real failure)

Mathematical Verification (independently re-derived)

  • $4,700 × (3.7% − 2%) = $79.90 ✓ (high-income base reduction)
  • (a)(4)(A) reductions at $5,600/$11,200/$16,000/$26,400 = $112/$224/$288/$367.20 ✓ (cumulative marginal-tax derivation)
  • (a)(4)(C) row 1: $290 + $79.90 = $369.90 ✓
  • (a)(4)(C) row 30: $10 + $79.90 = $89.90 ✓
  • All 10 new test expected values match parameter-derived results within 0.003 (margin 0.01) ✓

Review Severity: APPROVE

No critical issues. PR is narrow, accurate, well-cited, and mathematically verified.
The "Should Address" item (test gap) and suggestions are nice-to-have cleanups.

Next Steps

To apply suggested cleanups: /fix-pr 8245

hua7450 and others added 2 commits May 11, 2026 16:02
Per Ziming's review (PR PolicyEngine#8245):
- Add 3 intermediate (a)(4)(C) bracket-adjustment tests at $95,500,
  $96,500, and $97,000 to cover the previously-untested middle rows
- Update HB1001 references to point to page 2 of the PDF (where the
  rate and bracket-adjustment tables live) instead of the caption page
- Add 2026-01-01: 79.90 amount to 15 inert (.inf) brackets in
  reduction.yaml for internal consistency with the (a)(4)(B) tail
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.

Arkansas: implement HB1001 (2026 1st Extraordinary Session) individual income tax rate cuts

3 participants