Repository navigation
Conversation
PR Review: Fix Arkansas tax indexing, Kentucky 2021 CDCC, and WV 529 coordinationPR #10324 (author: MaxGhenis), head
The PR has no comments or reviews yet. It touches no partner test file. Sources read for this review (all fetched 2026-10-21):
SummaryWhat is right.
There is one critical finding and four should-address items:
There are also five suggestions: the standard deduction and low-income tables, the (C) row layout, Kentucky details, West Virginia tests, and the stale PR body. Status.
Critical (must fix)C1. The Arkansas index applies the previous calendar year's adjustment, which the 2013 act removed and DFA's tables contradict
Should addressS1. The Axiom line
|
DTrim99
left a comment
There was a problem hiding this comment.
KY 2021 is correct (KRS 141.067 with the Dec 31, 2018 Code matches Form 2441-K), and WV's 529 removal follows sections 12a and 12(c)(9) with no double count. One critical: the AR uprating gives tax year Y the CPI-U adjustment for calendar year Y-1, a rule Act 1459 of 2013 struck. Back-tested against DFA's cards, it reproduces 9 of 49 bounds, while the taxable-year window reproduces 49 of 49, so 2027+ runs one adjustment behind. Four should-address items: the invalid axiom line, stale WV candidates, the CI cost of the three synthetic reforms (AR batch 157s/5.8GB to 346s/8.0GB), and the AR anchor and tie rounding. Five suggestions. Full report in the comment above.
WIP: the three source corrections and targeted validation are complete. Full affected-folder checks remain incomplete: 56 YAML files and one Python file are unrun. No microsimulation ran here; the hub will run the impact.
Plan:
Arkansas —
us-ar-income-tax-index-seriesSource: Act 1459 of 2013, §2, PDF p3; Act 532 of 2023, PDF p4; Act 1 of 2026, PDF pp2–3.
What changed: added a dedicated unchained CPI-U index using September–August averages, annual increases floored at zero and capped at 3%, applied to the four indexed threshold families. Keep the shared IRS index, published history, nearest-$100 rounding, formulas, and fixed bracket adjustments.
The statute requires rounding to the nearest $100 but leaves exact $50 ties unspecified: half-up and ties-to-even give different boundaries. This PR retains Core's existing ties-to-even convention. The projected-schedule reference had used half-up; its helper is corrected to preserve the implemented convention. For example, a synthetic 3% increase takes $95,000 to $97,850, which Core rounds to $97,800. The tie-breaking interpretation remains open; this synthetic example asserts no actual 2027 coefficient.
Witness: complete synthetic 4% CPI-U / 1% chained windows imply a 3% Arkansas increase and $5,468.40 tax at $150,000 taxable income; 1% growth and deflation witnesses each produce $5,470.10. These demonstrate the mechanism, not an actual 2027 estimate. October 2025's missing CPI observation remains unresolved; no actual 2027 coefficient is asserted.
Years: projected 2027+.
Kentucky —
us-ky-arpa-2021-cdcc-static-conformitySource: 2021 Ky. Acts ch31 §1, PDF p3, KRS 141.067, 2021 Form 2441-K, PDF pp1–3, and 2020 IRC §21, PDF pp1,3.
What changed: added a 2021-only computation under the December 31, 2018 Code, using 2020 federal parameters for expense caps, rates, and section129 benefits, earned-income/filing limits, and federal liability limitation before Kentucky's existing 20% match. Preserve live federal 2021 and other Kentucky years.
Witness: $50,000 AGI, two qualifying individuals, $10,000 care expenses and sufficient liability produces $240 Kentucky potential credit (baseline $1,000). Zero federal credit liability produces zero; $450,000 AGI retains $120 because the conformed law has no ARPA second phaseout.
Years: 2021 only.
West Virginia —
us-wv-senior-modification-base-529Source: W. Va. Code §11-21-12(c)(9), §11-21-12a, 2000 HB4679, PDF p3, and 2025 Schedule M, PDF pp5–6.
What changed: removed 529 contribution payments from the senior/disability excluded-income list. Keep the separate 529 deduction and all other exclusions and modifications. Only the settled 529 classification is changed.
The income-base question has two defensible readings. The literal statutory reading allows the lesser of federal AGI and the $8,000 allowance remaining after the enumerated interest, retirement, and Social Security modifications. The Schedule M reading first removes the person's other excluded income, including taxable state or local refunds and military service pay, caps the remainder at $8,000, and then subtracts the enumerated modifications. For low-income seniors, the literal reading can deduct income already covered by another modification. Max's d1744.2 ruling retains the existing Schedule M computation to avoid that duplicate deduction; this PR preserves that base reading.
Witness: a senior with $6,000 personal AGI and $2,000 529 contributions receives a $6,000 senior modification plus the separate $2,000 529 deduction. With a $40,000 ineligible spouse, subtractions total $8,000, WV AGI is $38,000, and taxable income is $34,000 (baseline $36,000).
Years: deduction variable 2014+; integrated subtraction list retains its existing 2021 start.
Validation
Formatting and lint (
make format), Python syntax, and changed parameter/test YAML parsing pass. All 13 future-year Arkansas YAML cases use complete synthetic CPI windows. Current head is811d94de43901d6cdad443cc5516bd69011abd4a(eight commits).bfebelow meansbfe165ff288994facb146b5af441640aac2ddd70, before the AR reference-helper correction;d7meansd7fd2b508f531a9e50eeb5131b75a8b536dec2d7, before the KY fixture correction. Both later corrections change tests only; production source and earlier YAML results remain applicable.KY boundaries and both AR YAML resource plugins reported pytest status 0; the initial AR schedule plugin reported status 1. Its reference helper used half-up at the $97,850 tie while Core preserved ties-to-even. Only that test helper was corrected to existing
round; no production change was made. The corrected full rerun passed all 378 cases with pytest/plugin status 0 and clean outer exit 0. The full WV property-test file passed all four cases with pytest/plugin status 0 and clean outer exit 0. The full state-rounding Python file passed all 29 cases with pytest/plugin status 0 and clean outer exit 0. The final full indexing rerun passed all nine cases with pytest/plugin status 0 and clean outer exit 0. Testing has stopped; no active test processes or further tests remain. Local logs and resource reports are preserved as untracked hub evidence.KY's initial failure was input construction: six AGI values for one tax unit, before any policy assertion. The fixture now uses six scalar cases. All 28 current cases have successful results across two runs (22 unchanged plus six corrected); the full revised file was not rerun in one process. The initial process was interrupted with terminal Ctrl-C after more than seven minutes of post-summary shutdown and reported abnormal termination; this does not change its recorded pytest results. The earlier pre-fix WV CLI attempt produced no output for more than 47 minutes before interruption (exit 130), so no red-test result was observed.
All four changed YAML files have 138 current case passes across runs (73 AR individual, 15 AR joint, 28 KY, 22 WV). Broader validation remains incomplete: 56 other affected YAML files are unrun. The corrected full AR schedule file passed all 378 cases. WV senior-deduction properties passed all four cases. All four current Python files passed their 420 cases (378 AR schedule, four WV properties, 29 state rounding, nine indexing). AR low-income tables are the one genuinely unrun affected Python file. Full folder validation exceeds the available job window at the observed startup rate. No microsimulation ran; the hub will run impact. Draft CI jobs were skipped by the existing draft condition.
Python coverage uses seven tiny-tree index/window cases and two Core integration cases sharing a read-only fixture based on the package reference model; policy amounts use YAML. Shared fixture setup took 1,091.27 seconds in the pre-optimization Python run. Its tests passed, but the outer timing wrapper failed on sandboxed
sysctl kern.clockrate, preventing a peak-RSS measurement. A read-only Core review confirmed parameter cloning beforeReform.apply; the fixture now uses that owned clone, removing a redundant full-tree deepcopy. The final indexing rerun passed nine cases in 67.61 pytest seconds, including 59.93 seconds of shared fixture setup, with 237.39 seconds native wall time and 1,455.9 MiB peak RSS. Before optimization those measurements were 1,128.25 pytest seconds, 1,091.27 setup seconds and 2,422.27 native wall seconds; before peak RSS is unavailable. Host load and cache variability prevent attributing the elapsed difference to the optimization. AR's 73-case YAML file also passes after the change. Existing WV property tests classify 529 payments separately without adding a simulation-heavy property test.CI routing is unchanged: root-level AR Python files use Rest Python's remaining group (shard 1); core state-rounding and WV files use core (shard 2). Makefile historical coarse-group measurements were 14.4 GB / 22:18 for remaining and 13.3 GB / 11:51 for core (run 38141803955), followed by existing sequential isolation splits targeting approximately 10 GB per process. These historical figures and local overloaded-macOS timings are not estimates for this PR's Linux CI cost; incremental Linux CI before/after measurements are unavailable.
axiom: pending: hub files parity