Skip to content

Guard historical state rebate eligibility and document attribution - #10309

Open
MaxGhenis wants to merge 4 commits into
mainfrom
rebate-eligibility-year-guards-docs
Open

MaxGhenis wants to merge 4 commits into
mainfrom
rebate-eligibility-year-guards-docs

Conversation

@MaxGhenis

@MaxGhenis MaxGhenis commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor

WIP draft: implementation is pushed at 9671c54167e1401b7a07b3dd78d35367095f542c; local validation is partial and remaining files are handed to the hub. Hub impact and parity checks remain pending.

Parameter backdating lets several rebates reduce tax before their first eligibility year, such as Virginia's $250 rebate in 2020. Add the U6 historical guards for Colorado sales refunds, Illinois income/property rebates, New Mexico's three rebates, Virginia, Hawaii Act 115, and Massachusetts premium pay. Add the exact timing metadata, corrected MA Chapter 62F references, and the outside-modeler note/inventory.

Invariants, relative to merged main ce9377ee80157a17eb730fa1b8550b4d433c696c:

  • In each rebate's eligibility year, the amount is unchanged from main.
  • Before each one-time program's first eligibility year, its contribution to state tax is 0; each newly guarded standalone amount is also 0.
  • Colorado's recurring sales refund preserves 2015 availability and is 0 in 2016–2020; its 2015 amount schedule remains unaudited. Eligibility-year attribution, later aggregation gates, and tax/household aggregation paths are preserved.

Plan and validation:

  • Add the guards and six supplied regressions covering raw rebates, aggregate credits, and final state tax.
  • Merge current main while retaining its Virginia liability cap, references, and tests: the merged VA rebate file has 19 cases.
  • Pass the fresh metadata audit: 27 exact variable strings, 64 parameter descriptions, unchanged formula ASTs relative to merged main, and documentation checks. Formatting and PR-diff whitespace checks pass.
  • Pass all 24 frozen-main parameter differential/property tests on merged HEAD 9671c54167e1401b7a07b3dd78d35367095f542c: 24 passed in 47.71s in the isolated child. The checked numeric schedules are unchanged upstream.
  • Validate the 103-file / 925-case affected-state manifest, one file per foreground process with thread limits of 4: 39/103 files successful; 366 passed, 0 failed, 0 errors, 0 skipped. Retained pre-merge evidence: 22 unchanged files / 252 passes from 23a530ae1401fe1bbf8cc683b22d775fb6497bb7. Fresh merged-head evidence: 17 files / 114 passes on 9671c54167e1401b7a07b3dd78d35367095f542c. 64 files remain without a successful result because local validation stopped for the job window; see remaining-state-test-files.txt for the hub handoff.
  • Hub impact and parity checks.

The runner preloads the baseline and Core's standard model/cache clone once in an untouched parent. The parameter checks and each YAML file run in separate serial children; the parent runs no tests or calculations, copy-on-write keeps mutations child-local, and named reforms use Core's normal factory. The parent waits for every child, so test processes never overlap.

The committed Python coverage reuses the existing global model and stays in the existing policy-parameters CI group. Pre-merge local Python 3.13.9 / Core 3.33.2 measurement: 24 passed in 2.27s, 145.93s including startup/model loading. Peak memory was unavailable because the system query was denied. This is not a before/after benchmark; the prior Linux CI group passed 56 tests in 185.57s wall time at 5,685,736 KiB peak RSS. No CI runners or workflows changed.

No microsimulation runs locally; the hub runs impact validation, and default data may not measure 2020–2021. The uniform pre-rebate output remains outside this PR.

axiom: TheAxiomFoundation/rulespec-us#1852 queued (Illinois rebates); TheAxiomFoundation/rulespec-us#1853 queued (New Mexico rebates); TheAxiomFoundation/rulespec-us#1854 queued (Virginia rebate); TheAxiomFoundation/rulespec-us#1855 queued (Massachusetts premium pay); TheAxiomFoundation/rulespec-us#1530 queued, extended with a comment (Colorado historical availability); TheAxiomFoundation/rulespec-us#1685 queued, extended with a comment (Hawaii historical eligibility). Corpus source admission or release re-pin and signed encoder dispatch remain pending. Documentation, metadata and citation-only edits are n/a.

@PavelMakarchuk

Copy link
Copy Markdown
Collaborator

A note for this branch: #10277 (merged today) changed the Virginia rebate, and three of its files are also in this PR.

  • variables/gov/states/va/tax/income/va_rebate.py: va_rebate is now min(amount, max(0, tax after the other non-refundable credits − Spouse Tax Adjustment − refundable credits)). This follows the "tax liability after the application of any deductions, subtractions, or credits" limit in HB30 Item 3-5.22, HB6001 Item 3-5.28 B and HB1600 Item 258 GG.3.
  • parameters/gov/states/va/tax/income/credits/non_refundable.yaml: a comment only.
  • parameters/gov/states/va/tax/income/rebate/amount.yaml: adds the HB30 Item 3-5.22 reference.
  • tests/policy/baseline/gov/states/va/tax/income/va_rebate.yaml: 9 new cases. The 8 existing cases now set $1,000 of tax, because a filer with no tax gets no rebate.

So this branch needs main merged in, with small conflicts in those three files. Also, a Virginia case with no tax now gives va_rebate 0 in an eligibility year, and so does a case whose refundable EITC is more than the tax. A check that compares eligibility-year amounts with base 645fcd3 may need those cases updated.

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

Development

Successfully merging this pull request may close these issues.

2 participants