Skip to content

Index IRS parameters to the 12-months-ending-August chained CPI-U, with CBO's tax-year projections - #9621

Draft
MaxGhenis wants to merge 9 commits into
mainfrom
irs-index-tax-year-cpi
Draft

MaxGhenis wants to merge 9 commits into
mainfrom
irs-index-tax-year-cpi

Conversation

@MaxGhenis

@MaxGhenis MaxGhenis commented Sep 25, 2026 •

Copy link
Copy Markdown
Contributor

Draft / HOLD. Branch PolicyEngine:irs-index-tax-year-cpi is at 1a56a90069dfdf73cca7b2ce67af9a926c47324f. Mechanics are updated; Max's methodology decisions and hub gates remain pending.

Fixes #9105. Fixes #9608.

Index IRS parameters using the twelve months ending August before the tax year, including ending August and excluding preceding August. Fully unobserved windows use distinct CBO tax-year projections. Preserve published IRS anchors and statutory dependent/educator bases. Keep independent unchained CPI-U indexes for VT/WI, Wisconsin statutory rounding/floors, and California June CCPI and published 2026 amounts.

Merge with main

Merged main f9b55fc4dd05f1bed921a4dd06cb8c81f6ceb2c7 into the PR in merge commit 1a56a90069dfdf73cca7b2ce67af9a926c47324f; history was preserved. The PR remains draft.

Resolutions:

  • parameters/gov/states/ca/tax/income/rates/joint.yaml: retain PR's 2026 published thresholds and main's 2031 rate expiration, Proposition 55 references, and RTC §17045 citation.
  • parameters/gov/states/ca/tax/income/rates/surviving_spouse.yaml: retain the same indexing/expiration intents and joint-return citation.
  • tests/policy/baseline/gov/states/ca/tax/income/ca_income_tax_before_credits.yaml: retain all six PR 2026 cases and all seven main 2030/2031 controls. Refresh future arithmetic from the published 2026 anchors and forecast; refresh related AMT, mental-health-tax and Proposition 3 expectations, plus the ordinary educator-deduction case's published-2026 arithmetic.
  • Automatic-merge compatibility: main's new CPI-U/NYC and HSA helpers now pass the required explicit projection argument. NYC synthetic tests separately generate calendar and tax-year forecasts. Correct the stale 2027 dependent-deduction comment.

Validation on the merged tree: 183 Python + 160 YAML = 343 passing cases across 22 files, each invoked individually, serially, in the foreground with all six required thread settings. The existing retirement-contribution test that instantiates Microsimulation was explicitly deselected (one deselection); no microsimulations or partner tests ran. Python 3.13.9 / policyengine-core 3.33.2. make format passes. Routine YAML anyio assertion-rewrite warnings and the existing Oregon warning are recorded in local logs.

Paths below are relative to policyengine_us/tests/.

File Passed
core/test_hsa_contribution_limits.py 49
core/test_nyc_income_tax_elimination_credit_indexing.py 35
core/test_state_uprating_rounding.py 39
policy/baseline/contrib/states/ri/high_earner_tax/ri_high_earner_tax.yaml 4
policy/baseline/gov/irs/deductions/standard/basic_standard_deduction.yaml 17
policy/baseline/gov/states/ca/tax/income/alternative_minimum_tax/ca_amt.yaml 8
policy/baseline/gov/states/ca/tax/income/ca_income_tax_before_credits.yaml 15
policy/baseline/gov/states/ca/tax/income/ca_income_tax_before_refundable_credits.yaml 5
policy/baseline/gov/states/ca/tax/income/credits/renter/ca_renter_credit.yaml 15
policy/baseline/gov/states/ca/tax/income/deductions/standard/ca_standard_deduction.yaml 7
policy/baseline/gov/states/ca/tax/income/exemptions/ca_exemptions.yaml 7
policy/baseline/gov/states/or/tax/income/credits/test_or_ctc_sunset.py 8
policy/baseline/gov/states/ri/tax/income/agi/subtractions/social_security/ri_social_security_modification_eligible.yaml 16
policy/baseline/gov/states/ri/tax/income/integration.yaml 8
policy/baseline/gov/states/ri/tax/income/ri_high_earner_tax.yaml 7
policy/baseline/gov/states/wi/tax/income/wi_income_tax_before_credits.yaml 12
policy/baseline/gov/states/wi/tax/income/wi_standard_deduction.yaml 15
policy/baseline/parameters/test_uprating_extensions.py 37
policy/contrib/states/ca/ab2591/ca_ab2591.yaml 8
policy/contrib/states/ca/prop3/ca_prop3.yaml 11
policy/contrib/states/ca/prop3/test_ca_prop3_reform.py 15
policy/contrib/states/ut/dependent_exemption/ut_dependent_exemption.yaml 5

The hub will rerun both impact and the partner inventory at this merged head. Partner files are byte-for-byte equal to the merged main parent; none were edited for this PR. Current-head partner coverage, microsimulation impact and full CI are not claimed here.

The local, untracked decision brief hub-evidence/9621-decision-brief.md covers missing-month completion/flat tails, post-CBO growth, future state proxies, the CA replacement/unpublished credit knots, and level versus growth splicing, with source links and parameter-only 2026–2028 sensitivities. Recommendations are proposed decisions, not recorded Max approvals. Exact statutory CPI vintages, IRS treatment of missing October 2025, and inferred CalEITC knots remain verification limitations.

Historical hub notes before this main merge (superseded where the update above differs)

Draft / HOLD. The PR branch PolicyEngine:irs-index-tax-year-cpi is at 4c33655ae5 (the hub published the repair commits on 2026-10-08).

Local build: 4c33655ae5b3654f0624f02aed6d50f00908558c, against main e44d7c367327108858e06a22160b0ab5d7189c41, not pushed. CLI credentials/SSH agent are unavailable. Automatic approval rejected the body write because approval policy is never; no PR mutation occurred. Verified bundle/patch and correction remain local; merges preserve history.

Fixes #9105. Fixes #9608.

Index IRS parameters using twelve months ending August before the tax year, including ending August and excluding preceding August. Unobserved windows use distinct CBO tax-year projections. Preserve published IRS/calendar anchors; dependent/educator limits derive from statutory bases. Append verified July/August 2026 observations without refreshing historical chained vintages.

Separate VT/WI unchained indexes from federal chained CPI. WI uses statutory August bases, $10 half-up rounding, no-decrease floors, and the exact HOH crossover. Preserve published WI 2026 schedules and CA June CCPI/brackets/deductions/credits/renter ceilings. VT brackets remain preliminary; generated deduction/exemption amounts remain estimates. Preserve main's Louisiana/SSA/extensions, YCTC, role and NY CDCC changes.

Ordinary RI/UT/CA semantic tests retain original expected outputs with explicitly synthetic forecast inputs. Partner fixtures are untouched.

Fresh foreground single-file checks ran at 36a8a9705e86a8da9ce201a01f1d363854095365, Python 3.13.9/core 3.32.15. The complete model/data/test Git tree is identical here; the release merge changes changelogs/package version only. These are not new-head reruns:

  • 76 Python passes: 35 state-rounding, 33 federal uprating, 8 Oregon Kids' Credit; one microsimulation test deselected and one existing Oregon warning.
  • 137 YAML passes across fourteen files: IRS/WI/CA amounts and RI/CA/UT/MN semantic cases; all exits zero. Exact commands/results are saved locally.

HEAD-guarded exact-byte IO retains normal constructors/core processing without cached models/results; renter outputs matched between both IO configurations.

Fresh local-head partner inventory is INCOMPLETE/BLOCKED: 53/140 files, 209/597 cases, 4,689/8,006 assertions. Eight files contain 46 failed cases/95 outside-tolerance assertions; completed-file coverage/execution errors are zero. This includes 34 WIC assertions from appended seasonally adjusted CPI, distinct from IRS/CA effects. Published CA anchors change liability components; the $55,830 renter ceiling makes $55,218 eligible for $60. All 144 fixture hashes match main. Seven audit warnings concern one incomplete CSFP result, whose process may still be live; further runs await confirmation it has stopped. The remaining 87 files and full-precision evidence are saved locally. Missing results are not replaced by historical outputs. Complete inventory and the top-level three-question gate remain unresolved; no partner expectation edit is authorized.

Max HOLDs: missing-month completion/flat tails, post-CBO growth, future state proxies, CA proxy replacement/unpublished credits. Limitations: historical release vintages, VT inferred base/preliminary amounts, Oregon mixed NSA/seasonally adjusted CPI. No methodology ruling is recorded.

Exact-head independent source review APPROVE is mechanical only, with no new unresolved mechanical P1/P2; merge remains held. Aggregate impact is unmeasured; full suite/microsimulation/current green CI are absent. Reconcile #9601 CA expectations; serialize #9718 helper overlap. #9709/core #552 remain separate. Axiom parity remains incomplete: local IRS/state and RI drafts, no external issue/signed encoding.

Hub microsimulation impact (current head)

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

Output 2026 change 2027 change 2026 records changed (weighted) 2027 records changed (weighted)
state_income_tax -738.94M -921.05M 7,647 (20,156,114) 25,123 (48,387,502)
income_tax +34.40M -1.12bn 1,659 (4,844,508) 58,804 (118,346,325)
household_net_income +719.82M +2.22bn 10,650 (24,933,270) 49,963 (103,016,374)
household_benefits +15.25M +178.86M 4,407 (8,635,042) 6,502 (13,830,067)

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

axiom: 26 USC §1(f)(3)-(7); §63(c)(4)-(5); §62(d)(3) TheAxiomFoundation/rulespec-us#1400 queued | WI §71.05(22)(dp),(dt) TheAxiomFoundation/rulespec-us#1595 queued | WI §71.06(1r),(2)(k)/(L),(2e) TheAxiomFoundation/rulespec-us#1596 queued | 32 VSA §5811(21)(C)-(D) TheAxiomFoundation/rulespec-us#1597 queued | 32 VSA §5822(b)(2) TheAxiomFoundation/rulespec-us#1598 queued | CA RTC §17041(h) TheAxiomFoundation/rulespec-us#1599 queued | CA RTC §17073.5 TheAxiomFoundation/rulespec-us#1600 queued | CA RTC §17054 TheAxiomFoundation/rulespec-us#1601 queued | CA RTC §17053.5 TheAxiomFoundation/rulespec-us#1602 queued | WI §71.05(22)(dp) (published2026 HOH crossover only) encoded-correct (us-wi/policies/income_tax/2026_full_year_resident_core.yaml#standard_deduction_head_first_upper_boundary_plus_one)

26 U.S.C. 1(f)(6)(B) defines each calendar year's C-CPI-U as the average
over the 12 months ending August 31. get_irs_cpi averaged August through
July (#9105), and for years without BLS data it read c_cpi_u's February
projection points, which since #7394 are CBO calendar-year averages that
run about 0.7% above the September-August average (#9608).

Add CBO's tax-year CPI projections (Tax Parameters rows 152-153) as their
own series and read them for windows with no BLS observation, leaving the
calendar-year points for the 50-plus general CPI-U consumers. Route
gov.irs.uprating, the Oregon Kids' Credit COLA, and the 63(c)(4)
computation through the shared 12-months-ending-August helper. The
statute applied to this index reproduces all ten CBO projections of the
dependent standard deduction floor, so drop those hardcoded values.

Fixes #9105. Fixes #9608.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Keep published California indexing anchors alongside main's rate sunset and regression coverage. Pass explicit tax-year projections to main's CPI-U and HSA helpers and preserve independent NYC projection tests.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant