Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions changelog.d/fix-county-lookup-guards.fixed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Stop the Vermont renter credit from crashing on out-of-state households and on tax units over eight people, and all four programs (Vermont renter credit, Minnesota CCAP, Wisconsin Shares and Maryland CCS) from crashing on an in-state household whose county is UNKNOWN or belongs to another state, including counties supplied as UTF-8 bytes. Vermont tax units larger than eight people use the eight-person income limits and fair market rent as the Department of Taxes calculators do.
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
description: Vermont applies the renter credit income limits and fair market rents for this household size to larger households.
# The income limit and fair market rent tables run through family size 8. The
# Department of Taxes' renter credit calculators use Calculator sheet cells
# G10-G12 in 2021-2022 and G11-G13 in 2023-2025. The income limit lookups use
# IF(Household_Size>8,8,Household_Size), and the calculators accept family sizes
# 1 through 10. Their credit amount lookup caps the size at 4, which the fair
# market rent table already reflects by repeating the 4-person value through
# size 8.
values:
2021-01-01: 8
metadata:
unit: person
period: year
label: Vermont renter credit maximum household size
reference:
- title: 2025 Renter Credit Website Calculator (Calculator sheet, cells G11-G13)
href: https://tax.vermont.gov/sites/tax/files/documents/2025%20Renter%20Credit%20Website%20Calculator.xlsx
- title: 2024 Renter Credit Website Calculator (Calculator sheet, cells G11-G13)
href: https://tax.vermont.gov/sites/tax/files/documents/2024%20Renter%20Credit%20Website%20Calculator.xlsx
- title: 2023 Renter Credit Website Calculator (Calculator sheet, cells G11-G13)
href: https://web.archive.org/web/20250526044955/https://tax.vermont.gov/sites/tax/files/documents/2023%20Renter%20Credit%20Website%20Calculator_1.xlsx
- title: 2022 Renter Credit Website Calculator (Calculator sheet, cells G10-G12)
href: https://tax.vermont.gov/sites/tax/files/documents/2022%20Renter%20Credit%20Website%20Calculator_1.xlsx
- title: 2021 Renter Credit Website Calculator (Calculator sheet, cells G10-G12)
href: https://tax.vermont.gov/sites/tax/files/documents/2021%20Renter%20Credit%20Website%20Calculator_8.xlsx
Original file line number Diff line number Diff line change
Expand Up @@ -247,3 +247,179 @@
# Negative hours -> 0 units from the bracket -> select default UNIT_1.
# Region X, Center, REGULAR (age 5), UNIT_3 base $381/week x 1/3 = $127/week
md_ccs_payment_rate: [0, 127]

- name: Informal provider, unknown-county and out-of-state households in one simulation with a Montgomery County household.
# defined_for masks the output but the formula still runs over every
# household in the simulation. Before the UNKNOWN guard, the Maryland
# household with an UNKNOWN county reached the county-keyed informal rate
# table and raised ParameterNotFoundError.
period: 2026-01
absolute_error_margin: 0.1
input:
people:
person1:
age: 30
employment_income: 40_000
is_tax_unit_head_or_spouse: true
person2:
age: 3
is_tax_unit_dependent: true
immigration_status: CITIZEN
childcare_hours_per_day: 2
md_ccs_provider_type: INFORMAL
person3:
age: 30
employment_income: 40_000
is_tax_unit_head_or_spouse: true
person4:
age: 3
is_tax_unit_dependent: true
immigration_status: CITIZEN
childcare_hours_per_day: 2
md_ccs_provider_type: INFORMAL
person5:
age: 30
employment_income: 40_000
is_tax_unit_head_or_spouse: true
person6:
age: 3
is_tax_unit_dependent: true
immigration_status: CITIZEN
childcare_hours_per_day: 2
md_ccs_provider_type: INFORMAL
tax_units:
tax_unit1:
members: [person1, person2]
tax_unit2:
members: [person3, person4]
tax_unit3:
members: [person5, person6]
spm_units:
spm_unit1:
members: [person1, person2]
spm_unit2:
members: [person3, person4]
spm_unit3:
members: [person5, person6]
households:
household1:
members: [person1, person2]
state_code: MD
county: MONTGOMERY_COUNTY_MD
household2:
members: [person3, person4]
state_code: MD
county: UNKNOWN
household3:
members: [person5, person6]
state_code: VA
county: FAIRFAX_COUNTY_VA
output:
# person2: informal, Montgomery, REGULAR (age 3), UNIT_1 (2 hours):
# $177 / 3 = $59/week.
# person4: UNKNOWN county falls back to Allegany, informal REGULAR
# UNIT_1: $83 / 3 = $27.67/week.
# person6: Virginia; defined_for zeroes the result.
md_ccs_payment_rate: [0, 59, 0, 27.67, 0, 0]

- name: Maryland household with a Virginia county uses Allegany in a mixed simulation
# Keep a normal Maryland household present so the vectorized formula runs
# for the household whose county belongs to another state.
period: 2026-01
absolute_error_margin: 0.1
input:
people:
person1:
age: 30
employment_income: 40_000
is_tax_unit_head_or_spouse: true
person2:
age: 3
is_tax_unit_dependent: true
immigration_status: CITIZEN
childcare_hours_per_day: 2
md_ccs_provider_type: INFORMAL
person3:
age: 30
employment_income: 40_000
is_tax_unit_head_or_spouse: true
person4:
age: 3
is_tax_unit_dependent: true
immigration_status: CITIZEN
childcare_hours_per_day: 2
md_ccs_provider_type: INFORMAL
tax_units:
tax_unit1:
members: [person1, person2]
tax_unit2:
members: [person3, person4]
spm_units:
spm_unit1:
members: [person1, person2]
spm_unit2:
members: [person3, person4]
households:
household1:
members: [person1, person2]
state_code: MD
county: MONTGOMERY_COUNTY_MD
household2:
members: [person3, person4]
state_code: MD
county: FAIRFAX_COUNTY_VA
output:
# person2: informal, Montgomery, REGULAR (age 3), UNIT_1 (2 hours):
# $177 / 3 = $59/week.
# person4: the Virginia county falls back to Allegany, informal REGULAR,
# UNIT_1: $83 / 3 = $27.67/week.
md_ccs_payment_rate: [0, 59, 0, 27.67]

- name: UTF-8 byte counties preserve the Maryland rate in a mixed-state simulation
# !!binary preserves bytes, including the UTF-8 Ñ in DOÑA_ANA_COUNTY_NM.
period: 2026-01
absolute_error_margin: 0.1
input:
people:
person1:
age: 30
employment_income: 40_000
is_tax_unit_head_or_spouse: true
person2:
age: 3
is_tax_unit_dependent: true
immigration_status: CITIZEN
childcare_hours_per_day: 2
md_ccs_provider_type: INFORMAL
person3:
age: 30
employment_income: 40_000
is_tax_unit_head_or_spouse: true
person4:
age: 3
is_tax_unit_dependent: true
immigration_status: CITIZEN
childcare_hours_per_day: 2
md_ccs_provider_type: INFORMAL
tax_units:
tax_unit1:
members: [person1, person2]
tax_unit2:
members: [person3, person4]
spm_units:
spm_unit1:
members: [person1, person2]
spm_unit2:
members: [person3, person4]
households:
household1:
members: [person1, person2]
state_code: MD
county_str: !!binary TU9OVEdPTUVSWV9DT1VOVFlfTUQ= # MONTGOMERY_COUNTY_MD
household2:
members: [person3, person4]
state_code: NM
county_str: !!binary RE/DkUFfQU5BX0NPVU5UWV9OTQ== # DOÑA_ANA_COUNTY_NM
output:
# Montgomery informal regular UNIT_1: $177 / 3 = $59 per week.
md_ccs_payment_rate: [0, 59, 0, 0]
Original file line number Diff line number Diff line change
Expand Up @@ -241,3 +241,99 @@
county: MILWAUKEE_COUNTY_WI
output:
mn_ccap_provider_rate: 0

- name: Case 13, unknown-county and out-of-state households in one simulation with a Becker County household.
# defined_for masks the output but the formula still runs over every
# household in the simulation. Before the UNKNOWN guard, the Minnesota
# household with an UNKNOWN county reached the county-keyed rate tables and
# raised ParameterNotFoundError.
period: 2026-01
absolute_error_margin: 0.01
input:
people:
person1:
age: 0
childcare_hours_per_week: 45
mn_ccap_provider_type: FAMILY_CHILD_CARE
person2:
age: 0
childcare_hours_per_week: 45
mn_ccap_provider_type: FAMILY_CHILD_CARE
person3:
age: 0
childcare_hours_per_week: 45
mn_ccap_provider_type: FAMILY_CHILD_CARE
households:
household1:
members: [person1]
state_code: MN
county: BECKER_COUNTY_MN
household2:
members: [person2]
state_code: MN
county: UNKNOWN
household3:
members: [person3]
state_code: WI
county: MILWAUKEE_COUNTY_WI
output:
# person1: Becker family infant weekly 205 -> 205 * 52 / 12 = 888.33.
# person2: UNKNOWN county falls back to Hennepin, family infant weekly
# 250 -> 250 * 52 / 12 = 1,083.33.
# person3: Wisconsin; defined_for zeroes the result.
mn_ccap_provider_rate: [888.33, 1_083.33, 0]

- name: Case 14, Minnesota household with a Wisconsin county falls back to Hennepin alongside a Becker County household.
period: 2026-01
absolute_error_margin: 0.01
input:
people:
person1:
age: 0
childcare_hours_per_week: 45
mn_ccap_provider_type: FAMILY_CHILD_CARE
person2:
age: 0
childcare_hours_per_week: 45
mn_ccap_provider_type: FAMILY_CHILD_CARE
households:
household1:
members: [person1]
state_code: MN
county: BECKER_COUNTY_MN
household2:
members: [person2]
state_code: MN
county: MILWAUKEE_COUNTY_WI
output:
# person1: Becker family infant weekly 205 * 52 / 12 = 888.33.
# person2: Wisconsin county falls back to Hennepin, family infant weekly
# 250 * 52 / 12 = 1,083.33.
mn_ccap_provider_rate: [888.33, 1_083.33]

- name: UTF-8 byte counties preserve the Minnesota rate in a mixed-state simulation
# !!binary preserves bytes, including the UTF-8 Ñ in DOÑA_ANA_COUNTY_NM.
period: 2026-01
absolute_error_margin: 0.01
input:
people:
person1:
age: 0
childcare_hours_per_week: 45
mn_ccap_provider_type: FAMILY_CHILD_CARE
person2:
age: 0
childcare_hours_per_week: 45
mn_ccap_provider_type: FAMILY_CHILD_CARE
households:
household1:
members: [person1]
state_code: MN
county_str: !!binary QkVDS0VSX0NPVU5UWV9NTg== # BECKER_COUNTY_MN
household2:
members: [person2]
state_code: NM
county_str: !!binary RE/DkUFfQU5BX0NPVU5UWV9OTQ== # DOÑA_ANA_COUNTY_NM
output:
# Becker family infant weekly $205 * 52 / 12 = $888.33 per month.
mn_ccap_provider_rate: [888.33, 0]
Loading
Loading