Repository navigation
Match Vermont renter credit base amounts for Franklin and Grand Isle to the department's tables - #10130
Conversation
Store the department's state-average fair market rents for Franklin and Grand Isle (32 V.S.A. 6061(7)(C)) to the cent for 2022, 2023 and 2025, and round the credit amount to whole dollars, half up, before the income phase-out, as the department's calculator does. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…calculators Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
The CI run on this pull request was cancelled at 23:27Z on 2026-10-11 to free the organization's shared GitHub runners for an urgent fix in another repository. The US + core hub will re-run it automatically (cancelled jobs only; jobs that had passed are kept). Nothing in this pull request changed. Please don't push or reopen just to restart CI. |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #10130 +/- ##
=========================================
Coverage 100.00% 100.00%
=========================================
Files 4 1 -3
Lines 76 34 -42
Branches 2 0 -2
=========================================
- Hits 76 34 -42
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
|
US + core hub merge audit, us#10130 at
|
Main's #10130 changed vt_renter_credit.py (base rounded to whole dollars, final credit half up) and appended cases to vt_renter_credit.yaml. Every case from both sides is kept; a rounding audit shows none of this PR's nine expectations change under main's rounding. 590 tests pass on this tree. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Summary
PE's Vermont renter credit for Franklin and Grand Isle was $1 above the Department of Taxes' published tables in these county-size groups:
This PR stores reconstructed statewide-average monthly rents to the cent for 2022, 2023 and 2025, and rounds the base credit to whole dollars before applying the income phase-out. It also rounds the final credit half up, matching the department calculators and retaining coverage of exact 50-cent ties.
Independent review verified all 560 full-credit county × household-size × year outcomes against the official 2021–2025 workbooks. The final-rounding correction also applies beyond those years, including the existing temporary 12.5% rate in 2027.
Published amounts and historical reconstructions
32 V.S.A. §6061(7)(C) defines fair market rent as HUD's FMR for the claimant's area as of June 30 of the taxable year. For Franklin or Grand Isle, it specifies the statewide average. For 2021–2025, §6066(b) bases the credit on 10% of annual fair market rent, subject to the $2,500 cap.
For other counties, the 2021–2025 published full-credit amounts match
MIN(ROUND(HUD monthly FMR × 12 × 10%, 0), 2,500), using HUD's fiscal-year file containing June 30 and the rent formin(household size, 4)bedrooms. The 2021 calculator explicitly computes this rounded base amount. Chittenden's capped rents are represented in PE as $2,083 per month.The following historical reconstructions reproduce all four published Franklin/Grand Isle amounts for each year. The 2022–2025 workbooks hard-code their credit tables; they do not contain formulas establishing the averaging methods below as department rules. In particular, excluding Addison in 2022 and capping Burlington's four-bedroom rent in 2023 are inferred reconstructions, not instructions to carry into another year.
The 12 areas are the 11 nonmetro counties and the Burlington–South Burlington MSA, which includes Franklin and Grand Isle. Means over the 14 counties or 255 towns do not reproduce the published tables. The plain 12-area mean in 2022 produces credits of $1,010, $1,251, $1,611 and $1,777; omitting any area other than Addison reproduces none of the four published cells. Without the reconstructed Burlington cap in 2023, the four-bedroom credit would be $1,913.
Whole-dollar rounding does not explain the previous 2025 size-3 rent of $1,688: the reconstructed mean is $1,687.17 and rounds to $1,687. The origin of $1,688 remains unexplained. This PR instead uses the rent that reproduces the published $2,025 credit.
The calculators apply the phase-out to their whole-dollar base credit and round the resulting credit half up with
ROUND(..., 0): Calculator!G16 in 2021 and 2022, and Calculator!G17 in 2023, 2024, and 2025. The 2023 workbook is cited through its archived official URL.Changes
parameters/.../renter/fair_market_rent.yaml: changes 46 numeric cells, exclusively Franklin and Grand Isle for 2022, 2023 and 2025; labels the inferred averaging methods as reconstructions; corrects the 2022 renter calculator reference; and adds statutory, calculator, report and HUD references.variables/.../renter/vt_renter_credit.py: rounds the base withnp.floor(fmr * MONTHS_IN_YEAR * p.fmr_rate + 0.5)before phase-out, and rounds the final non-negative credit withnp.floor(unrounded + 0.5). Unsubsidized partial credits multiply the whole-dollar base by the income difference before dividing by the phase-out band, preserving exact half-dollar results for whole-dollar inputs.test_vt_renter_credit_amounts.py: removes the grid and Hypothesis exclusions for final-rounding ties, so those scenarios are checked against the calculator's half-up formula.vt_renter_credit.yaml: adds explicit final-rounding ties for Franklin and Lamoille in 2025, a non-midpoint tie for Caledonia in 2022, and a 2027 full-credit tie in Addison.The 2025 four-bedroom statewide-average base is itself a tie: $1,828.75 × 12 × 10% = $2,194.50, rounded to $2,195 before phase-out.
The formula continues to apply in 2027 and later. The existing rate parameter temporarily rises to 12.5% in 2027 and returns to 10% in 2028, under 2026 Vt. Acts No. 169, §§8 and 10. At the 2027 rate, Addison's one-person base becomes $1,655 instead of $1,654. Static comparison with main counts 37 full-credit county-size cells outside Franklin and Grand Isle that change in 2027, including the tested Addison cell; each increases by $1. Half-up base and final rounding continue after the rate returns to 10% in 2028.
Tests
vt_renter_credit.yamlcontains 14 new cases relative to main. The original ten expectations were independently recomputed against the 2022, 2023 and 2025 calculators: five full-credit cases cover the corrected cells and the $2,194.50 base tie; five partial-credit cases cover phase-out from a whole-dollar base, including Addison's $924 credit instead of $923.The four fix-round cases are:
The 2022 calculator,
Calculator!G16, gives $501 for Caledonia. Dividing before multiplying produces the floating-point value500.49999999999994; multiplying before dividing preserves500.5and allows the final half-up operation to return $501.test_vt_renter_credit_amounts.pyuses independent reference amounts extracted from the five calculator tables. It checks all 560 full-credit cells, partial credits on the existing 2,800-income grid for each year, and Hypothesis-generated incomes. The grid includes both income limits, their adjacent dollars, and 19 points between them; its existing $37 offset is retained. The invariants check the published base below the extremely low-income limit, the calculator's half-up phase-out formula, nonincreasing credit as income rises, and identical Franklin/Grand Isle outcomes. Exact 50-cent ties are no longer excluded; the YAML cases provide deterministic tie coverage.The Python file verifies independent workbook-based references and randomized invariants; deterministic policy examples remain in YAML. It remains in the existing sequential Rest
policygroup. A passing run has 30 Simulation constructions: five full-credit batches, five income-grid batches, and 20 Hypothesis examples, each reusing the imported system's read-only policy state. Restoring ties adds no batches or CI runners. The existing Makefile records 185 seconds for the broader policy group from CI run 37198184683; no new CI benchmark was triggered.Single local macOS/Python 3.13.9 measurements, including model loading and setup: before restoring ties, 12 passed in 330.26 seconds wall time; afterward, 12 passed in 508.12 seconds with 0.949 GiB peak RSS. The baseline peak RSS was unavailable because the sandbox denied the system query used by
time -l; the final run measured child RSS withresource.getrusage. These are local samples with differing cache state and generated inputs, not Linux CI measurements or a controlled performance comparison. Logs and resource records are untracked inhub-evidence/.Validation runs each file in a separate foreground process with all requested thread caps set to 4 and
OMP_WAIT_POLICY=PASSIVE:vt_renter_credit.yamlvt_renter_credit_countable_tax_exempt_ss.yamlvt_renter_credit_integration.yamltest_vt_renter_credit_amounts.pymake format(Ruff formatting and lint) andgit diff --checkpassed.test_vt_renter_credit_amounts.pyis the only Python test file in the PR. Partner contract files are untouched.Hub microsimulation impact (current head)
A real microsimulation on the default dataset, main at the merge base
065d0e9560against this PR's headbd06003799, for 2024 and 2025 and 2026. The runs went one at a time under the shared heavy-job lock. Sums are weighted.state_income_taxincome_taxhousehold_net_incomehousehold_benefitsRun on the standard outputs only: without #10116's guard, requesting
vt_renter_creditacross the whole population crashes on both sides. Its only consumer istaxsim_state_property_tax_credit(the TAXSIM export), so household tax, income and benefit outputs do not change in any year.Comparison files are in
fixes/10130-impact/on the hub host.Impact and follow-ups
The historical household/grid comparisons identify changes of at most $1 per tax unit, including other counties' partial credits and final-rounding ties. The static 2027 comparison also finds 12 Franklin/Grand Isle full-credit cells decreasing by $1 through the corrected rents carried forward, in addition to the 37 other-county cells increasing by $1 through half-up base rounding: 49 full-credit cells change in total. No aggregate microsimulation was run for this change; the hub's full-file impact run remains required.
Shared-credit rounding order remains a separate follow-up: the calculator rounds before halving a shared credit, while PE halves before final rounding. Months-rented and subsidized-month proration also remain unmodeled. Final-rounding ties are fixed and covered in this PR.
Evidence (scripts, HUD and department sources with sha256, outputs):
~/reviews/vt-renter-fmr-2026-10. Fix-round validation evidence:hub-evidence/.Related: #10125 (income limits) and #10116 (size cap and county guard) also change
vt_renter_credit.yamland land separately; they may require test-file conflict resolution.axiom: TheAxiomFoundation/rulespec-us#1678 queued (extended with the credit-amount rounding rule, the Franklin/Grand Isle averages and companion tests: TheAxiomFoundation/rulespec-us#1678 (comment))
🤖 Generated with Claude Code