Fix saver's credit AGI boundary tiers - #9193
Merged
MaxGhenis merged 1 commit intoAug 2, 2026
Merged
Conversation
…usive AGI maxima exclusively (boundary enters next tier) Closes PolicyEngine#9151
MaxGhenis
approved these changes
Aug 2, 2026
MaxGhenis
left a comment
Contributor
There was a problem hiding this comment.
Merging under the cross-family dual-review protocol (Claude Fable 5 + GPT-5.6-sol, independent reviews, both merge-ok). Implements #9151's recommended next-whole-dollar representation of the IRS inclusive AGI maxima exactly.
Verified: every changed expectation recomputed from branch parameters; filing-status derivations (0.5/0.75) preserve whole-dollar boundary behavior; the changed scale's only formula consumer is savers_credit_person; 15/15 YAML cases pass. Nonblocking: fractional-AGI slivers between a published maximum and the +1 threshold retain the higher rate (documented whole-dollar convention per the issue); a maximum+1 fixture would pin the tier transition explicitly.
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.
Fixes #9151.
The saver's credit joint rate parameter stored IRS-published inclusive AGI maxima as
single_amountthresholds. Since PolicyEngine treats those thresholds as lower bounds, AGI exactly equal to a published maximum moved into the next lower credit-rate tier.This keeps the existing formula and filing-status adjustment logic, and shifts the nonzero joint thresholds to the first whole-dollar AGI above each published inclusive maximum for the years already represented in the parameter.
Also updates the nearby saver's credit YAML tests so exact published boundaries receive the higher inclusive-tier rate, adds the reported 2026 single-filer first-tier boundary regression case, and includes the repository-required fixed changelog fragment.