From 9c17c78a94e12083c8d1ee47da94406844c823d8 Mon Sep 17 00:00:00 2001 From: Max Ghenis Date: Thu, 12 Nov 2026 01:11:39 -0500 Subject: [PATCH 1/2] Include Georgia funding for reduced-price school meals Co-Authored-By: Claude Opus 5.5 --- changelog.d/ga-school-meal-copays.fixed.md | 1 + .../state_covers_reduced_price_copay.yaml | 51 ++++- policyengine_us/programs.yaml | 6 + .../test_ga_school_meal_copay_invariants.py | 173 +++++++++++++++++ .../school_meals/ga_reduced_price_copay.yaml | 176 ++++++++++++++++++ .../usda/school_meals/school_meal_tier.yaml | 21 ++- 6 files changed, 411 insertions(+), 17 deletions(-) create mode 100644 changelog.d/ga-school-meal-copays.fixed.md create mode 100644 policyengine_us/tests/core/test_ga_school_meal_copay_invariants.py create mode 100644 policyengine_us/tests/policy/baseline/gov/usda/school_meals/ga_reduced_price_copay.yaml diff --git a/changelog.d/ga-school-meal-copays.fixed.md b/changelog.d/ga-school-meal-copays.fixed.md new file mode 100644 index 00000000000..53157b5d77a --- /dev/null +++ b/changelog.d/ga-school-meal-copays.fixed.md @@ -0,0 +1 @@ +Model Georgia's funding of both reduced-price school meal copays from school year 2023-24 through school year 2026-27. diff --git a/policyengine_us/parameters/gov/usda/school_meals/state_covers_reduced_price_copay.yaml b/policyengine_us/parameters/gov/usda/school_meals/state_covers_reduced_price_copay.yaml index b992201a99a..818435c0981 100644 --- a/policyengine_us/parameters/gov/usda/school_meals/state_covers_reduced_price_copay.yaml +++ b/policyengine_us/parameters/gov/usda/school_meals/state_covers_reduced_price_copay.yaml @@ -1,6 +1,6 @@ description: States provide breakfast and lunch at no cost to students eligible for reduced-price meals under the National School Lunch Program and School Breakfast Program if this is true. # Every jurisdiction with a true entry below is verified against the cited law. -# Georgia and Virginia are intentionally false (see their entries). North Dakota students in the +# Virginia stays false as a modeling choice (see its entry). North Dakota students in the # reduced-price band are covered through state_free_income_limit from July 1, # 2023 to June 30, 2027, and Oregon students in that band are also covered # through it from July 1, 2021. Coverage of only one meal is in @@ -208,13 +208,50 @@ DE: FL: 0000-01-01: false GA: - # Georgia stays false for now, by reviewer decision. It has no statute and - # funds reduced-price breakfast and lunch at no charge only through annual - # budget items: FY2025 (HB 916, Act 709, program 24.13, line 1871, - # https://opb.georgia.gov/document/appropriations-bills/hb-916-fy-2025-appropriations-bill/download#page=66), - # FY2026 (HB 68, item 155.4) and FY2027 (HB 974, program 24.13). Encoding - # them would cover 2024-07-01 to 2027-06-30. 0000-01-01: false + # GaDOE used federal ESSER funds for both copays in SY2023-24, then + # state appropriations from FY2025 through FY2027. Date the first year + # from July 1 under 7 CFR 210.2; the annual formula first applies it in + # 2024. The last enacted allocation ends June 30, 2027. + 2023-07-01: + value: true + metadata: + reference: + - title: Georgia Department of Audits and Accounts, FY2024 Audit Updates, May 2, 2024, School Nutrition Supplement, slide 86 + href: https://gagains.org/wp-content/uploads/2024/05/GAINS-2024-Final-DOAA.pdf#page=86 + - title: Houston County School District, Elementary School Handbook 2023-2024, Lunch and Breakfast Program + href: https://content.myconnectsuite.com/api/documents/5c99a830aac74fd7aaac6bfedd1b0ca0#page=27 + - title: 7 CFR 210.2, school year definition + href: https://www.ecfr.gov/current/title-7/section-210.2 + 2024-07-01: + value: true + metadata: + reference: + - title: Georgia HB 916, FY2025 Appropriations Act, program 24.13, line 1871 + href: https://opb.georgia.gov/document/appropriations-bills/hb-916-fy-2025-appropriations-bill/download#page=66 + 2025-07-01: + value: true + metadata: + reference: + - title: Georgia HB 68, FY2026 Appropriations Act, item 155.4 + href: https://opb.georgia.gov/document/appropriations-bills-prior-years/hb-68-fy-2026-appropriations-bill/download#page=106 + - title: Georgia State Auditor fiscal note for LC 49 2461, January 9, 2026 + href: https://opb.georgia.gov/document/fiscal-notes-2026/lc-49-2461/download#page=1 + 2026-07-01: + value: true + metadata: + reference: + - title: Georgia HB 974, FY2027 Appropriations Act, program 24.13 + href: https://opb.georgia.gov/document/appropriations-bills-current-year/hb-974-fy-2027-appropriations-bill/download#page=75 + - title: Atlanta Public Schools, school year 2026-2027 meal prices + href: https://www.atlantapublicschools.us/about/departments/operations/nutrition + # The FY2027 appropriation ends June 30, 2027. + 2027-07-01: + value: false + metadata: + reference: + - title: Georgia HB 974, FY2027 Appropriations Act, program 24.13 + href: https://opb.georgia.gov/document/appropriations-bills-current-year/hb-974-fy-2027-appropriations-bill/download#page=75 GU: 0000-01-01: false HI: diff --git a/policyengine_us/programs.yaml b/policyengine_us/programs.yaml index 0f74596fd68..e8f657360ed 100644 --- a/policyengine_us/programs.yaml +++ b/policyengine_us/programs.yaml @@ -133,6 +133,12 @@ programs: effective: 2024-07-01 notes: Both-meal copay coverage at public district and charter schools from SY2024-25; free breakfast for all students at public schools in the School Breakfast Program from SY2025-26, excluding CEP and Provision 1-3 schools. reference: 84 Del. Laws c. 317 (14 Del. C. § 4137A); 85 Del. Laws c. 110 (14 Del. C. § 4137C); 85 Del. Laws c. 65, § 33 + - state: GA + status: complete + name: Georgia reduced-price meal copay coverage + effective: 2023-07-01 + notes: GaDOE funds both copays with federal ESSER funds in SY2023-24 and state appropriations from FY2025 through FY2027, ending June 30, 2027. The annual formula applies coverage in calendar years 2024 through 2027. + reference: Georgia Department of Audits and Accounts, FY2024 Audit Updates, slide 86; HB 916 (FY2025), program 24.13, line 1871; HB 68 (FY2026), item 155.4; HB 974 (FY2027), program 24.13 - state: HI status: complete name: Hawaii reduced-price meal copay coverage and expanded free meals diff --git a/policyengine_us/tests/core/test_ga_school_meal_copay_invariants.py b/policyengine_us/tests/core/test_ga_school_meal_copay_invariants.py new file mode 100644 index 00000000000..a677c28a2a9 --- /dev/null +++ b/policyengine_us/tests/core/test_ga_school_meal_copay_invariants.py @@ -0,0 +1,173 @@ +"""Check Georgia's funded copays and the households outside their scope. + +GaDOE pays both copays with federal ESSER funds in SY2023-24, then state +appropriations under HB 916 (FY2025), program 24.13, line 1871; HB 68 +(FY2026), item 155.4; and HB 974 (FY2027), program 24.13. Date the school +year from July 1 under 7 CFR 210.2. The annual formulas read January 1, +so coverage changes 2024 through 2027. + +Each draw puts Georgia households beside identical Alabama, Florida and +North Carolina households in one simulation per year. Generated incomes +include the federal boundaries and preserve categorical eligibility. +One system serves every example. Parameter checks cover each fiscal start +and the enacted end directly, including July dates that annual formulas +cannot distinguish. +""" + +from itertools import product + +import numpy as np +import pytest +from hypothesis import HealthCheck, given, settings +from hypothesis import strategies as st +from policyengine_core.parameters.operations.get_parameter import get_parameter + +from policyengine_us import Simulation + +YEARS = (2023, 2024, 2025, 2026, 2027, 2028) +STATES = ("GA", "AL", "FL", "NC") +TIERS = ( + "school_meal_tier", + "school_meal_breakfast_tier", + "school_meal_lunch_tier", +) +BOUNDARY_INCOMES = (12_999, 13_000, 13_001, 18_499, 18_500, 18_501) +FPG = 10_000 +FREE_LIMIT = 13_000 +REDUCED_LIMIT = 18_500 + + +@pytest.fixture(scope="module") +def school_meal_system(): + return Simulation.default_tax_benefit_system_instance + + +@pytest.mark.parametrize( + "date, expected", + ( + ("2023-06-30", False), + ("2023-07-01", True), + ("2024-06-30", True), + ("2024-07-01", True), + ("2025-06-30", True), + ("2025-07-01", True), + ("2026-06-30", True), + ("2026-07-01", True), + ("2027-06-30", True), + ("2027-07-01", False), + ), +) +def test_fiscal_funding_boundaries(school_meal_system, date, expected): + parameter = get_parameter( + school_meal_system.parameters, + "gov.usda.school_meals.state_covers_reduced_price_copay.GA", + ) + assert bool(parameter(date)) == expected + + +def _situation(incomes, children, year): + people, spm_units, households = {}, {}, {} + records = [] + for index, (income, categorical, state) in enumerate( + product(incomes, (False, True), STATES) + ): + parent = f"parent_{index}" + people[parent] = {"age": {year: 35}, "is_in_k12_school": {year: False}} + members = [parent] + for child_index in range(children): + name = f"child_{index}_{child_index}" + people[name] = { + "age": {year: 10}, + "is_in_k12_school": {year: True}, + } + members.append(name) + spm_units[f"unit_{index}"] = { + "members": members, + "spm_unit_fpg": {year: FPG}, + "school_meal_countable_income": {year: income}, + "meets_school_meal_categorical_eligibility": {year: categorical}, + } + households[f"household_{index}"] = { + "members": members, + "state_code": {year: state}, + } + records.append((income, categorical, state)) + return {"people": people, "spm_units": spm_units, "households": households}, records + + +def _expected_tier(income, categorical, copays): + if categorical or income <= FREE_LIMIT: + return "FREE" + if income > REDUCED_LIMIT: + return "PAID" + return "FREE" if copays else "REDUCED" + + +def _check(incomes, children, system): + incomes = sorted(set((*BOUNDARY_INCOMES, *incomes))) + for year in YEARS: + situation, records = _situation(incomes, children, year) + simulation = Simulation(situation=situation, tax_benefit_system=system) + results = { + name: simulation.calculate(name, year).decode_to_str() for name in TIERS + } + net = np.asarray(simulation.calculate("school_meal_net_subsidy", year)) + meal_parameters = system.parameters(f"{year}-01-01").gov.usda.school_meals + rates = meal_parameters.amount + paid = rates.sbp.CONTIGUOUS_US.PAID + rates.nslp.CONTIGUOUS_US.PAID + control_results = {} + for index, (income, categorical, state) in enumerate(records): + ga_coverage = state == "GA" and 2024 <= year <= 2027 + # North Carolina already covers both copays throughout these years. + old_tier = _expected_tier(income, categorical, state == "NC") + tier = _expected_tier(income, categorical, ga_coverage or state == "NC") + for name in TIERS: + assert results[name][index] == tier, (year, state, income, name) + intended_change = ( + ga_coverage and not categorical and FREE_LIMIT < income <= REDUCED_LIMIT + ) + assert (tier != old_tier) == intended_change + daily = ( + rates.sbp.CONTIGUOUS_US[tier] + rates.nslp.CONTIGUOUS_US[tier] - paid + ) + np.testing.assert_allclose( + net[index], + children * meal_parameters.school_days * daily, + atol=0.01, + rtol=0, + ) + control_results[income, categorical, state] = (tier, net[index]) + + for income, categorical in product(incomes, (False, True)): + ga_tier, ga_net = control_results[income, categorical, "GA"] + fl_tier, fl_net = control_results[income, categorical, "FL"] + if 2024 <= year <= 2027: + assert ga_net >= fl_net - 0.01 + if categorical or income <= FREE_LIMIT or income > REDUCED_LIMIT: + assert ga_tier == fl_tier + np.testing.assert_allclose(ga_net, fl_net, atol=0.01, rtol=0) + else: + assert ga_tier == fl_tier + np.testing.assert_allclose(ga_net, fl_net, atol=0.01, rtol=0) + + generosity = {"FREE": 2, "REDUCED": 1, "PAID": 0} + for categorical, state in product((False, True), STATES): + scores = [ + generosity[control_results[income, categorical, state][0]] + for income in incomes + ] + assert all(left >= right for left, right in zip(scores, scores[1:])) + + +@given( + incomes=st.lists(st.integers(0, 40_000), min_size=1, max_size=4), + children=st.integers(1, 3), +) +@settings( + max_examples=6, + deadline=None, + derandomize=True, + suppress_health_check=[HealthCheck.too_slow], +) +def test_copay_scope_and_income_monotonicity(school_meal_system, incomes, children): + _check(incomes, children, school_meal_system) diff --git a/policyengine_us/tests/policy/baseline/gov/usda/school_meals/ga_reduced_price_copay.yaml b/policyengine_us/tests/policy/baseline/gov/usda/school_meals/ga_reduced_price_copay.yaml new file mode 100644 index 00000000000..c3c88513296 --- /dev/null +++ b/policyengine_us/tests/policy/baseline/gov/usda/school_meals/ga_reduced_price_copay.yaml @@ -0,0 +1,176 @@ +# GaDOE funds both copays in SY2023-24 through federal ESSER funds. +# Date that school year from July 1 under 7 CFR 210.2. Annual formulas +# read January 1, so 2023 stays reduced and 2024 first receives coverage. +# https://gagains.org/wp-content/uploads/2024/05/GAINS-2024-Final-DOAA.pdf#page=86 +# https://content.myconnectsuite.com/api/documents/5c99a830aac74fd7aaac6bfedd1b0ca0#page=27 +# https://www.ecfr.gov/current/title-7/section-210.2 +# For every annual case below, 16,000 / 10,000 = 1.60, between the +# federal free limit of 1.30 and reduced-price limit of 1.85. +- name: Georgia retains reduced-price charges at the start of 2023. + period: 2023 + input: + state_code: GA + spm_unit_fpg: 10_000 + school_meal_countable_income: 16_000 + meets_school_meal_categorical_eligibility: false + output: + school_meal_tier: REDUCED + school_meal_breakfast_tier: REDUCED + school_meal_lunch_tier: REDUCED + +- name: Georgia funds both reduced-price copays with federal funds in 2024. + period: 2024 + input: + state_code: GA + spm_unit_fpg: 10_000 + school_meal_countable_income: 16_000 + meets_school_meal_categorical_eligibility: false + output: + school_meal_tier: FREE + school_meal_breakfast_tier: FREE + school_meal_lunch_tier: FREE + +# HB 916 (FY2025), program 24.13, line 1871 funds both copays from +# July 1, 2024 through state appropriations. +# https://opb.georgia.gov/document/appropriations-bills/hb-916-fy-2025-appropriations-bill/download#page=66 +- name: Georgia funds both reduced-price copays in 2025. + period: 2025 + input: + state_code: GA + spm_unit_fpg: 10_000 + school_meal_countable_income: 16_000 + meets_school_meal_categorical_eligibility: false + output: + school_meal_tier: FREE + school_meal_breakfast_tier: FREE + school_meal_lunch_tier: FREE + +# HB 68 (FY2026), item 155.4 continues both copays from July 1, 2025. +# https://opb.georgia.gov/document/appropriations-bills-prior-years/hb-68-fy-2026-appropriations-bill/download#page=106 +- name: Georgia continues to fund both reduced-price copays in 2026. + period: 2026 + input: + state_code: GA + spm_unit_fpg: 10_000 + school_meal_countable_income: 16_000 + meets_school_meal_categorical_eligibility: false + output: + school_meal_tier: FREE + school_meal_breakfast_tier: FREE + school_meal_lunch_tier: FREE + +# HB 974 (FY2027), program 24.13 continues funding through June 30, 2027. +# https://opb.georgia.gov/document/appropriations-bills-current-year/hb-974-fy-2027-appropriations-bill/download#page=75 +- name: Georgia funds both reduced-price copays at the start of 2027. + period: 2027 + input: + state_code: GA + spm_unit_fpg: 10_000 + school_meal_countable_income: 16_000 + meets_school_meal_categorical_eligibility: false + output: + school_meal_tier: FREE + school_meal_breakfast_tier: FREE + school_meal_lunch_tier: FREE + +- name: Georgia retains reduced-price charges after enacted funding ends. + period: 2028 + input: + state_code: GA + spm_unit_fpg: 10_000 + school_meal_countable_income: 16_000 + meets_school_meal_categorical_eligibility: false + output: + school_meal_tier: REDUCED + school_meal_breakfast_tier: REDUCED + school_meal_lunch_tier: REDUCED + +# Federal limits: ceil(1.30 * 10,000) = 13,000 and +# ceil(1.85 * 10,000) = 18,500. Test $1 below, at and above each limit. +# Georgia pays both copays throughout the existing reduced-price band. +# Florida retains the federal tiers at the same incomes. +- name: Georgia covers the reduced-price band and preserves its upper boundary. + period: 2026 + input: + state_code: [GA, GA, GA, GA, GA, GA, FL, FL, FL, FL, FL, FL] + spm_unit_fpg: [10_000, 10_000, 10_000, 10_000, 10_000, 10_000, 10_000, 10_000, 10_000, 10_000, 10_000, 10_000] + school_meal_countable_income: [12_999, 13_000, 13_001, 18_499, 18_500, 18_501, 12_999, 13_000, 13_001, 18_499, 18_500, 18_501] + meets_school_meal_categorical_eligibility: [false, false, false, false, false, false, false, false, false, false, false, false] + output: + school_meal_tier: [FREE, FREE, FREE, FREE, FREE, PAID, FREE, FREE, REDUCED, REDUCED, REDUCED, PAID] + school_meal_breakfast_tier: [FREE, FREE, FREE, FREE, FREE, PAID, FREE, FREE, REDUCED, REDUCED, REDUCED, PAID] + school_meal_lunch_tier: [FREE, FREE, FREE, FREE, FREE, PAID, FREE, FREE, REDUCED, REDUCED, REDUCED, PAID] + +# Categorical eligibility provides free meals regardless of state copay +# funding or income: 30,000 / 10,000 = 3.00, above the income limits. +- name: Georgia keeps categorical eligibility before the first funded school year. + period: 2023 + input: + state_code: GA + spm_unit_fpg: 10_000 + school_meal_countable_income: 30_000 + meets_school_meal_categorical_eligibility: true + output: + school_meal_tier: FREE + school_meal_breakfast_tier: FREE + school_meal_lunch_tier: FREE + +- name: Georgia keeps categorical eligibility during state copay funding. + period: 2026 + input: + state_code: GA + spm_unit_fpg: 10_000 + school_meal_countable_income: 30_000 + meets_school_meal_categorical_eligibility: true + output: + school_meal_tier: FREE + school_meal_breakfast_tier: FREE + school_meal_lunch_tier: FREE + +- name: Georgia keeps categorical eligibility after state copay funding. + period: 2028 + input: + state_code: GA + spm_unit_fpg: 10_000 + school_meal_countable_income: 30_000 + meets_school_meal_categorical_eligibility: true + output: + school_meal_tier: FREE + school_meal_breakfast_tier: FREE + school_meal_lunch_tier: FREE + +# For two people, the model's 2026 guideline equals 15,960 + 5,680 = +# 21,640. Income of 34,624 / 21,640 = 1.60 falls in the reduced-price band. +# The January 1 rates give 4.60 lunch + 2.46 breakfast = 7.06 a day. +# Paid reimbursement equals 0.44 + 0.40 = 0.84 a day. +# One child * 180 days * (7.06 - 0.84) = 1,119.60 of net meal value. +# https://www.govinfo.gov/content/pkg/FR-2025-07-24/pdf/2025-13879.pdf#page=3 +- name: Georgia gives both meals at no charge to a child in the reduced-price band. + period: 2026 + absolute_error_margin: 0.01 + input: + people: + parent: + age: 35 + child: + age: 10 + spm_units: + unit: + members: [parent, child] + school_meal_countable_income: 34_624 + meets_school_meal_categorical_eligibility: false + households: + household: + members: [parent, child] + state_code: GA + output: + spm_unit_fpg: 21_640 + school_meal_fpg_ratio: 1.6 + school_meal_tier: FREE + school_meal_breakfast_tier: FREE + school_meal_lunch_tier: FREE + school_meal_daily_subsidy: 7.06 + school_meal_paid_daily_subsidy: 0.84 + school_meal_net_subsidy: 1_119.60 + free_school_meals: 1_119.60 + reduced_price_school_meals: 0 diff --git a/policyengine_us/tests/policy/baseline/gov/usda/school_meals/school_meal_tier.yaml b/policyengine_us/tests/policy/baseline/gov/usda/school_meals/school_meal_tier.yaml index bc7ac0e22e0..5836530b16e 100644 --- a/policyengine_us/tests/policy/baseline/gov/usda/school_meals/school_meal_tier.yaml +++ b/policyengine_us/tests/policy/baseline/gov/usda/school_meals/school_meal_tier.yaml @@ -149,8 +149,8 @@ # read parameters on January 1, so coverage that starts or ends between July 1 # and December 31 first changes the next calendar year. Every case lists: # AR, AZ, CT, DC, DE, GA, HI, LA, MD, NE, NJ, NM, OH, PA, RI, SC, SD, TX, WA, -# VA and FL. GA (left out for now) and VA are intentionally not covered, and -# FL has no coverage. +# VA and FL. GA covers both copays from July 2023 through June 2027; VA +# stays false as a modeling choice, and FL has no coverage. # Calendar 2010 cannot be tested: the federal income limits start 2011-01-01. # DC: D.C. Law 18-209, Title II applies from 2010-08-01. @@ -210,15 +210,16 @@ school_meal_tier: [REDUCED, FREE, FREE, FREE, REDUCED, REDUCED, REDUCED, REDUCED, FREE, REDUCED, FREE, FREE, REDUCED, REDUCED, REDUCED, REDUCED, REDUCED, REDUCED, FREE, REDUCED, REDUCED] # AR from 2023-08-01; LA and PA from 2023-07-01; OH from 2023-10-03; CT -# STABLE for SY 2023-24. DE, RI and SC start 2024-07-01. -- name: Arkansas, Connecticut, Louisiana, Ohio and Pennsylvania cover the reduced-price copay from 2024. +# STABLE for SY 2023-24. GA funds both copays in SY2023-24 through ESSER. +# DE, RI and SC start 2024-07-01. +- name: Arkansas, Connecticut, Georgia, Louisiana, Ohio and Pennsylvania cover the reduced-price copay from 2024. period: 2024 input: state_code: [AR, AZ, CT, DC, DE, GA, HI, LA, MD, NE, NJ, NM, OH, PA, RI, SC, SD, TX, WA, VA, FL] school_meal_fpg_ratio: [1.8, 1.8, 1.8, 1.8, 1.8, 1.8, 1.8, 1.8, 1.8, 1.8, 1.8, 1.8, 1.8, 1.8, 1.8, 1.8, 1.8, 1.8, 1.8, 1.8, 1.8] meets_school_meal_categorical_eligibility: [false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false] output: - school_meal_tier: [FREE, FREE, FREE, FREE, REDUCED, REDUCED, REDUCED, FREE, FREE, REDUCED, FREE, FREE, FREE, FREE, REDUCED, REDUCED, REDUCED, REDUCED, FREE, REDUCED, REDUCED] + school_meal_tier: [FREE, FREE, FREE, FREE, REDUCED, FREE, REDUCED, FREE, FREE, REDUCED, FREE, FREE, FREE, FREE, REDUCED, REDUCED, REDUCED, REDUCED, FREE, REDUCED, REDUCED] # DE, RI and SC from 2024-07-01; CT STAR for SY 2024-25. # HI (2025-07-01) and TX (2025-09-01) start later in 2025. @@ -229,7 +230,7 @@ school_meal_fpg_ratio: [1.8, 1.8, 1.8, 1.8, 1.8, 1.8, 1.8, 1.8, 1.8, 1.8, 1.8, 1.8, 1.8, 1.8, 1.8, 1.8, 1.8, 1.8, 1.8, 1.8, 1.8] meets_school_meal_categorical_eligibility: [false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false] output: - school_meal_tier: [FREE, FREE, FREE, FREE, FREE, REDUCED, REDUCED, FREE, FREE, REDUCED, FREE, FREE, FREE, FREE, FREE, FREE, REDUCED, REDUCED, FREE, REDUCED, REDUCED] + school_meal_tier: [FREE, FREE, FREE, FREE, FREE, FREE, REDUCED, FREE, FREE, REDUCED, FREE, FREE, FREE, FREE, FREE, FREE, REDUCED, REDUCED, FREE, REDUCED, REDUCED] # HI: Act 139, SLH 2025; TX: GAA 2026-27 riders 29 and 31. CT had no state # funding in SY 2025-26. NE and SD start 2026-07-01. @@ -240,19 +241,19 @@ school_meal_fpg_ratio: [1.8, 1.8, 1.8, 1.8, 1.8, 1.8, 1.8, 1.8, 1.8, 1.8, 1.8, 1.8, 1.8, 1.8, 1.8, 1.8, 1.8, 1.8, 1.8, 1.8, 1.8] meets_school_meal_categorical_eligibility: [false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false] output: - school_meal_tier: [FREE, FREE, REDUCED, FREE, FREE, REDUCED, FREE, FREE, FREE, REDUCED, FREE, FREE, FREE, FREE, FREE, FREE, REDUCED, FREE, FREE, REDUCED, REDUCED] + school_meal_tier: [FREE, FREE, REDUCED, FREE, FREE, FREE, FREE, FREE, FREE, REDUCED, FREE, FREE, FREE, FREE, FREE, FREE, REDUCED, FREE, FREE, REDUCED, REDUCED] # CT RISE (SY 2026-27), NE LB966 and SD HB 1082 start 2026-07-01. -- name: All 18 covered jurisdictions in this matrix give the free tier in 2027, while Georgia, Virginia and Florida do not. +- name: All 19 covered jurisdictions in this matrix give the free tier in 2027, while Virginia and Florida do not. period: 2027 input: state_code: [AR, AZ, CT, DC, DE, GA, HI, LA, MD, NE, NJ, NM, OH, PA, RI, SC, SD, TX, WA, VA, FL] school_meal_fpg_ratio: [1.8, 1.8, 1.8, 1.8, 1.8, 1.8, 1.8, 1.8, 1.8, 1.8, 1.8, 1.8, 1.8, 1.8, 1.8, 1.8, 1.8, 1.8, 1.8, 1.8, 1.8] meets_school_meal_categorical_eligibility: [false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false] output: - school_meal_tier: [FREE, FREE, FREE, FREE, FREE, REDUCED, FREE, FREE, FREE, FREE, FREE, FREE, FREE, FREE, FREE, FREE, FREE, FREE, FREE, REDUCED, REDUCED] + school_meal_tier: [FREE, FREE, FREE, FREE, FREE, FREE, FREE, FREE, FREE, FREE, FREE, FREE, FREE, FREE, FREE, FREE, FREE, FREE, FREE, REDUCED, REDUCED] -# Enacted funding ends 2027-07-01 for AZ, CT and SC, and 2027-09-01 +# Enacted funding ends 2027-07-01 for AZ, CT, GA and SC, and 2027-09-01 # for TX. WA's breakfast copay proviso ends 2027-06-30, so WA covers only # lunch from 2027-07-01 (see school_meal_lunch_tier) and its tier for both # meals is REDUCED. From 5e30ffa82343202400c2a9302a3e9dcabb826d3d Mon Sep 17 00:00:00 2001 From: Max Ghenis Date: Thu, 12 Nov 2026 01:56:22 -0500 Subject: [PATCH 2/2] Place Georgia copay cases with school meal tier tests Co-Authored-By: Claude Opus 5.5 --- .../school_meals/ga_reduced_price_copay.yaml | 176 ----------------- .../usda/school_meals/school_meal_tier.yaml | 179 ++++++++++++++++++ 2 files changed, 179 insertions(+), 176 deletions(-) delete mode 100644 policyengine_us/tests/policy/baseline/gov/usda/school_meals/ga_reduced_price_copay.yaml diff --git a/policyengine_us/tests/policy/baseline/gov/usda/school_meals/ga_reduced_price_copay.yaml b/policyengine_us/tests/policy/baseline/gov/usda/school_meals/ga_reduced_price_copay.yaml deleted file mode 100644 index c3c88513296..00000000000 --- a/policyengine_us/tests/policy/baseline/gov/usda/school_meals/ga_reduced_price_copay.yaml +++ /dev/null @@ -1,176 +0,0 @@ -# GaDOE funds both copays in SY2023-24 through federal ESSER funds. -# Date that school year from July 1 under 7 CFR 210.2. Annual formulas -# read January 1, so 2023 stays reduced and 2024 first receives coverage. -# https://gagains.org/wp-content/uploads/2024/05/GAINS-2024-Final-DOAA.pdf#page=86 -# https://content.myconnectsuite.com/api/documents/5c99a830aac74fd7aaac6bfedd1b0ca0#page=27 -# https://www.ecfr.gov/current/title-7/section-210.2 -# For every annual case below, 16,000 / 10,000 = 1.60, between the -# federal free limit of 1.30 and reduced-price limit of 1.85. -- name: Georgia retains reduced-price charges at the start of 2023. - period: 2023 - input: - state_code: GA - spm_unit_fpg: 10_000 - school_meal_countable_income: 16_000 - meets_school_meal_categorical_eligibility: false - output: - school_meal_tier: REDUCED - school_meal_breakfast_tier: REDUCED - school_meal_lunch_tier: REDUCED - -- name: Georgia funds both reduced-price copays with federal funds in 2024. - period: 2024 - input: - state_code: GA - spm_unit_fpg: 10_000 - school_meal_countable_income: 16_000 - meets_school_meal_categorical_eligibility: false - output: - school_meal_tier: FREE - school_meal_breakfast_tier: FREE - school_meal_lunch_tier: FREE - -# HB 916 (FY2025), program 24.13, line 1871 funds both copays from -# July 1, 2024 through state appropriations. -# https://opb.georgia.gov/document/appropriations-bills/hb-916-fy-2025-appropriations-bill/download#page=66 -- name: Georgia funds both reduced-price copays in 2025. - period: 2025 - input: - state_code: GA - spm_unit_fpg: 10_000 - school_meal_countable_income: 16_000 - meets_school_meal_categorical_eligibility: false - output: - school_meal_tier: FREE - school_meal_breakfast_tier: FREE - school_meal_lunch_tier: FREE - -# HB 68 (FY2026), item 155.4 continues both copays from July 1, 2025. -# https://opb.georgia.gov/document/appropriations-bills-prior-years/hb-68-fy-2026-appropriations-bill/download#page=106 -- name: Georgia continues to fund both reduced-price copays in 2026. - period: 2026 - input: - state_code: GA - spm_unit_fpg: 10_000 - school_meal_countable_income: 16_000 - meets_school_meal_categorical_eligibility: false - output: - school_meal_tier: FREE - school_meal_breakfast_tier: FREE - school_meal_lunch_tier: FREE - -# HB 974 (FY2027), program 24.13 continues funding through June 30, 2027. -# https://opb.georgia.gov/document/appropriations-bills-current-year/hb-974-fy-2027-appropriations-bill/download#page=75 -- name: Georgia funds both reduced-price copays at the start of 2027. - period: 2027 - input: - state_code: GA - spm_unit_fpg: 10_000 - school_meal_countable_income: 16_000 - meets_school_meal_categorical_eligibility: false - output: - school_meal_tier: FREE - school_meal_breakfast_tier: FREE - school_meal_lunch_tier: FREE - -- name: Georgia retains reduced-price charges after enacted funding ends. - period: 2028 - input: - state_code: GA - spm_unit_fpg: 10_000 - school_meal_countable_income: 16_000 - meets_school_meal_categorical_eligibility: false - output: - school_meal_tier: REDUCED - school_meal_breakfast_tier: REDUCED - school_meal_lunch_tier: REDUCED - -# Federal limits: ceil(1.30 * 10,000) = 13,000 and -# ceil(1.85 * 10,000) = 18,500. Test $1 below, at and above each limit. -# Georgia pays both copays throughout the existing reduced-price band. -# Florida retains the federal tiers at the same incomes. -- name: Georgia covers the reduced-price band and preserves its upper boundary. - period: 2026 - input: - state_code: [GA, GA, GA, GA, GA, GA, FL, FL, FL, FL, FL, FL] - spm_unit_fpg: [10_000, 10_000, 10_000, 10_000, 10_000, 10_000, 10_000, 10_000, 10_000, 10_000, 10_000, 10_000] - school_meal_countable_income: [12_999, 13_000, 13_001, 18_499, 18_500, 18_501, 12_999, 13_000, 13_001, 18_499, 18_500, 18_501] - meets_school_meal_categorical_eligibility: [false, false, false, false, false, false, false, false, false, false, false, false] - output: - school_meal_tier: [FREE, FREE, FREE, FREE, FREE, PAID, FREE, FREE, REDUCED, REDUCED, REDUCED, PAID] - school_meal_breakfast_tier: [FREE, FREE, FREE, FREE, FREE, PAID, FREE, FREE, REDUCED, REDUCED, REDUCED, PAID] - school_meal_lunch_tier: [FREE, FREE, FREE, FREE, FREE, PAID, FREE, FREE, REDUCED, REDUCED, REDUCED, PAID] - -# Categorical eligibility provides free meals regardless of state copay -# funding or income: 30,000 / 10,000 = 3.00, above the income limits. -- name: Georgia keeps categorical eligibility before the first funded school year. - period: 2023 - input: - state_code: GA - spm_unit_fpg: 10_000 - school_meal_countable_income: 30_000 - meets_school_meal_categorical_eligibility: true - output: - school_meal_tier: FREE - school_meal_breakfast_tier: FREE - school_meal_lunch_tier: FREE - -- name: Georgia keeps categorical eligibility during state copay funding. - period: 2026 - input: - state_code: GA - spm_unit_fpg: 10_000 - school_meal_countable_income: 30_000 - meets_school_meal_categorical_eligibility: true - output: - school_meal_tier: FREE - school_meal_breakfast_tier: FREE - school_meal_lunch_tier: FREE - -- name: Georgia keeps categorical eligibility after state copay funding. - period: 2028 - input: - state_code: GA - spm_unit_fpg: 10_000 - school_meal_countable_income: 30_000 - meets_school_meal_categorical_eligibility: true - output: - school_meal_tier: FREE - school_meal_breakfast_tier: FREE - school_meal_lunch_tier: FREE - -# For two people, the model's 2026 guideline equals 15,960 + 5,680 = -# 21,640. Income of 34,624 / 21,640 = 1.60 falls in the reduced-price band. -# The January 1 rates give 4.60 lunch + 2.46 breakfast = 7.06 a day. -# Paid reimbursement equals 0.44 + 0.40 = 0.84 a day. -# One child * 180 days * (7.06 - 0.84) = 1,119.60 of net meal value. -# https://www.govinfo.gov/content/pkg/FR-2025-07-24/pdf/2025-13879.pdf#page=3 -- name: Georgia gives both meals at no charge to a child in the reduced-price band. - period: 2026 - absolute_error_margin: 0.01 - input: - people: - parent: - age: 35 - child: - age: 10 - spm_units: - unit: - members: [parent, child] - school_meal_countable_income: 34_624 - meets_school_meal_categorical_eligibility: false - households: - household: - members: [parent, child] - state_code: GA - output: - spm_unit_fpg: 21_640 - school_meal_fpg_ratio: 1.6 - school_meal_tier: FREE - school_meal_breakfast_tier: FREE - school_meal_lunch_tier: FREE - school_meal_daily_subsidy: 7.06 - school_meal_paid_daily_subsidy: 0.84 - school_meal_net_subsidy: 1_119.60 - free_school_meals: 1_119.60 - reduced_price_school_meals: 0 diff --git a/policyengine_us/tests/policy/baseline/gov/usda/school_meals/school_meal_tier.yaml b/policyengine_us/tests/policy/baseline/gov/usda/school_meals/school_meal_tier.yaml index 5836530b16e..f15e9fcc207 100644 --- a/policyengine_us/tests/policy/baseline/gov/usda/school_meals/school_meal_tier.yaml +++ b/policyengine_us/tests/policy/baseline/gov/usda/school_meals/school_meal_tier.yaml @@ -1188,3 +1188,182 @@ output: spm_unit_fpg: [0, 0, 0] school_meal_tier: [FREE, REDUCED, PAID] + +# GaDOE funds both copays in SY2023-24 through federal ESSER funds. +# Date that school year from July 1 under 7 CFR 210.2. Annual formulas +# read January 1, so 2023 stays reduced and 2024 first receives coverage. +# https://gagains.org/wp-content/uploads/2024/05/GAINS-2024-Final-DOAA.pdf#page=86 +# https://content.myconnectsuite.com/api/documents/5c99a830aac74fd7aaac6bfedd1b0ca0#page=27 +# https://www.ecfr.gov/current/title-7/section-210.2 +# For every annual case below, 16,000 / 10,000 = 1.60, between the +# federal free limit of 1.30 and reduced-price limit of 1.85. +- name: Georgia retains reduced-price charges at the start of 2023. + period: 2023 + input: + state_code: GA + spm_unit_fpg: 10_000 + school_meal_countable_income: 16_000 + meets_school_meal_categorical_eligibility: false + output: + school_meal_tier: REDUCED + school_meal_breakfast_tier: REDUCED + school_meal_lunch_tier: REDUCED + +- name: Georgia funds both reduced-price copays with federal funds in 2024. + period: 2024 + input: + state_code: GA + spm_unit_fpg: 10_000 + school_meal_countable_income: 16_000 + meets_school_meal_categorical_eligibility: false + output: + school_meal_tier: FREE + school_meal_breakfast_tier: FREE + school_meal_lunch_tier: FREE + +# Georgia funds both copays from July 1, 2024 under HB 916 (FY2025), +# program 24.13, line 1871. +# https://opb.georgia.gov/document/appropriations-bills/hb-916-fy-2025-appropriations-bill/download#page=66 +- name: Georgia funds both reduced-price copays in 2025. + period: 2025 + input: + state_code: GA + spm_unit_fpg: 10_000 + school_meal_countable_income: 16_000 + meets_school_meal_categorical_eligibility: false + output: + school_meal_tier: FREE + school_meal_breakfast_tier: FREE + school_meal_lunch_tier: FREE + +# Georgia funds both copays from July 1, 2025 under HB 68 (FY2026), +# item 155.4. +# https://opb.georgia.gov/document/appropriations-bills-prior-years/hb-68-fy-2026-appropriations-bill/download#page=106 +- name: Georgia continues to fund both reduced-price copays in 2026. + period: 2026 + input: + state_code: GA + spm_unit_fpg: 10_000 + school_meal_countable_income: 16_000 + meets_school_meal_categorical_eligibility: false + output: + school_meal_tier: FREE + school_meal_breakfast_tier: FREE + school_meal_lunch_tier: FREE + +# Georgia funds both copays through June 30, 2027 under HB 974 +# (FY2027), program 24.13. +# https://opb.georgia.gov/document/appropriations-bills-current-year/hb-974-fy-2027-appropriations-bill/download#page=75 +- name: Georgia funds both reduced-price copays at the start of 2027. + period: 2027 + input: + state_code: GA + spm_unit_fpg: 10_000 + school_meal_countable_income: 16_000 + meets_school_meal_categorical_eligibility: false + output: + school_meal_tier: FREE + school_meal_breakfast_tier: FREE + school_meal_lunch_tier: FREE + +- name: Georgia retains reduced-price charges after enacted funding ends. + period: 2028 + input: + state_code: GA + spm_unit_fpg: 10_000 + school_meal_countable_income: 16_000 + meets_school_meal_categorical_eligibility: false + output: + school_meal_tier: REDUCED + school_meal_breakfast_tier: REDUCED + school_meal_lunch_tier: REDUCED + +# Federal limits: ceil(1.30 * 10,000) = 13,000 and +# ceil(1.85 * 10,000) = 18,500. Test $1 below, at and above each limit. +# Georgia pays both copays throughout the existing reduced-price band. +# Florida retains the federal tiers at the same incomes. +- name: Georgia covers the reduced-price band and preserves its upper boundary. + period: 2026 + input: + state_code: [GA, GA, GA, GA, GA, GA, FL, FL, FL, FL, FL, FL] + spm_unit_fpg: [10_000, 10_000, 10_000, 10_000, 10_000, 10_000, 10_000, 10_000, 10_000, 10_000, 10_000, 10_000] + school_meal_countable_income: [12_999, 13_000, 13_001, 18_499, 18_500, 18_501, 12_999, 13_000, 13_001, 18_499, 18_500, 18_501] + meets_school_meal_categorical_eligibility: [false, false, false, false, false, false, false, false, false, false, false, false] + output: + school_meal_tier: [FREE, FREE, FREE, FREE, FREE, PAID, FREE, FREE, REDUCED, REDUCED, REDUCED, PAID] + school_meal_breakfast_tier: [FREE, FREE, FREE, FREE, FREE, PAID, FREE, FREE, REDUCED, REDUCED, REDUCED, PAID] + school_meal_lunch_tier: [FREE, FREE, FREE, FREE, FREE, PAID, FREE, FREE, REDUCED, REDUCED, REDUCED, PAID] + +# Categorical eligibility provides free meals regardless of state copay +# funding or income: 30,000 / 10,000 = 3.00, above the income limits. +- name: Georgia keeps categorical eligibility before the first funded school year. + period: 2023 + input: + state_code: GA + spm_unit_fpg: 10_000 + school_meal_countable_income: 30_000 + meets_school_meal_categorical_eligibility: true + output: + school_meal_tier: FREE + school_meal_breakfast_tier: FREE + school_meal_lunch_tier: FREE + +- name: Georgia keeps categorical eligibility during state copay funding. + period: 2026 + input: + state_code: GA + spm_unit_fpg: 10_000 + school_meal_countable_income: 30_000 + meets_school_meal_categorical_eligibility: true + output: + school_meal_tier: FREE + school_meal_breakfast_tier: FREE + school_meal_lunch_tier: FREE + +- name: Georgia keeps categorical eligibility after state copay funding. + period: 2028 + input: + state_code: GA + spm_unit_fpg: 10_000 + school_meal_countable_income: 30_000 + meets_school_meal_categorical_eligibility: true + output: + school_meal_tier: FREE + school_meal_breakfast_tier: FREE + school_meal_lunch_tier: FREE + +# For two people, the model's 2026 guideline equals 15,960 + 5,680 = +# 21,640. Income of 34,624 / 21,640 = 1.60 falls in the reduced-price band. +# The January 1 rates give 4.60 lunch + 2.46 breakfast = 7.06 a day. +# Paid reimbursement equals 0.44 + 0.40 = 0.84 a day. +# One child * 180 days * (7.06 - 0.84) = 1,119.60 of net meal value. +# https://www.govinfo.gov/content/pkg/FR-2025-07-24/pdf/2025-13879.pdf#page=3 +- name: Georgia gives both meals at no charge to a child in the reduced-price band. + period: 2026 + absolute_error_margin: 0.01 + input: + people: + parent: + age: 35 + child: + age: 10 + spm_units: + unit: + members: [parent, child] + school_meal_countable_income: 34_624 + meets_school_meal_categorical_eligibility: false + households: + household: + members: [parent, child] + state_code: GA + output: + spm_unit_fpg: 21_640 + school_meal_fpg_ratio: 1.6 + school_meal_tier: FREE + school_meal_breakfast_tier: FREE + school_meal_lunch_tier: FREE + school_meal_daily_subsidy: 7.06 + school_meal_paid_daily_subsidy: 0.84 + school_meal_net_subsidy: 1_119.60 + free_school_meals: 1_119.60 + reduced_price_school_meals: 0