From 5f3bd3656d505c0334260ffb2b197c121807b741 Mon Sep 17 00:00:00 2001 From: Max Ghenis Date: Thu, 12 Nov 2026 00:37:27 -0500 Subject: [PATCH 01/11] Count public assistance and state supplements in New York CCAP income Co-Authored-By: Claude Opus 5.5 --- .../ny-ccap-public-assistance-income.fixed.md | 1 + .../ccap/income/countable_income/sources.yaml | 23 +- policyengine_us/programs.yaml | 2 +- ...cap_public_assistance_income_invariants.py | 314 ++++++++++++++++++ .../ny_ccap_public_assistance_income.yaml | 208 ++++++++++++ ...ap_public_assistance_income_abolition.yaml | 15 + .../ny/ocfs/ccap/ny_ccap_countable_income.py | 36 +- .../ny/ocfs/ccap/ny_safety_net_assistance.py | 21 ++ source_conflicts/candidates.yaml | 31 ++ .../us-ny/lii-404-5-2026-exclusions-end.txt | 7 + .../ocfs-404-eligibility-2023-child-ssi.txt | 9 + 11 files changed, 639 insertions(+), 28 deletions(-) create mode 100644 changelog.d/ny-ccap-public-assistance-income.fixed.md create mode 100644 policyengine_us/tests/core/test_ny_ccap_public_assistance_income_invariants.py create mode 100644 policyengine_us/tests/policy/baseline/gov/states/ny/ocfs/ccap/ny_ccap_public_assistance_income.yaml create mode 100644 policyengine_us/tests/policy/baseline/gov/states/ny/ocfs/ccap/ny_ccap_public_assistance_income_abolition.yaml create mode 100644 policyengine_us/variables/gov/states/ny/ocfs/ccap/ny_safety_net_assistance.py create mode 100644 source_conflicts/sources/us-ny/lii-404-5-2026-exclusions-end.txt create mode 100644 source_conflicts/sources/us-ny/ocfs-404-eligibility-2023-child-ssi.txt diff --git a/changelog.d/ny-ccap-public-assistance-income.fixed.md b/changelog.d/ny-ccap-public-assistance-income.fixed.md new file mode 100644 index 00000000000..d463fa75a7c --- /dev/null +++ b/changelog.d/ny-ccap-public-assistance-income.fixed.md @@ -0,0 +1 @@ +Counted Family Assistance, Safety Net Assistance payments and adult state SSI supplements in New York child care assistance income. diff --git a/policyengine_us/parameters/gov/states/ny/ocfs/ccap/income/countable_income/sources.yaml b/policyengine_us/parameters/gov/states/ny/ocfs/ccap/income/countable_income/sources.yaml index 7bc09440a9e..7bac1abbb45 100644 --- a/policyengine_us/parameters/gov/states/ny/ocfs/ccap/income/countable_income/sources.yaml +++ b/policyengine_us/parameters/gov/states/ny/ocfs/ccap/income/countable_income/sources.yaml @@ -18,6 +18,8 @@ values: # 404.5(b)(5)(iv) also counts railroad retirement checks from the # U.S. government, which PolicyEngine records separately. - railroad_benefits + # 404.5(b)(5)(vi): public assistance, including home relief. + - ny_safety_net_assistance # 404.5(b)(5)(v): dividends, interest, income from estates or trusts, # net rental income and royalties. - dividend_income @@ -37,10 +39,12 @@ values: # 404.5(b)(5)(xii): veterans' pensions. - veterans_benefits # - # Counted but not listed here because the amount depends on who receives - # it — see ny_ccap_countable_income: - # - ssi, countable in full under 404.5(b)(5)(vi) except for the SSI of any - # child in the child care services unit, which 404.5(b)(6)(xxi) excludes. + # Counted separately in ny_ccap_countable_income: + # - ny_tanf, with TANF take-up and abolition controls. The New York + # grant avoids other states' dependent care deductions in the federal + # TANF aggregate, which reach CCAP through child care subsidies. + # - ssi and ny_ssp for adults under 404.5(b)(5)(vi). OCFS excludes both + # payments for children in the unit under 404.5(b)(6)(xxi). # # Excluded sources, so simply not listed: # - capital_gains, excluded by 404.5(b)(6)(viii), and proceeds from the @@ -53,17 +57,6 @@ values: # and 404.5(b)(5) is a closed enumeration. # - gi_cash_assistance, illicit_income and miscellaneous_income, none of # which appear in the 404.5(b)(5) enumeration. - # - tanf and other public assistance. These are countable under - # 404.5(b)(5)(vi), but counting them closes a circular dependency: - # ny_ccap_countable_income -> tanf -> childcare_expenses -> - # child_care_subsidies -> ny_ccap -> ny_ccap_countable_income. The same - # hazard is documented in - # gov/states/in/fssa/ccdf/income/sources.yaml. Omitting them understates - # countable income for public-assistance households, which is partly - # offset because 415.3(e)(1) exempts those households from the family - # share entirely. - # - state supplementary payments to SSI recipients, countable under - # 404.5(b)(5)(vi). PolicyEngine has no state supplement variable. metadata: unit: list diff --git a/policyengine_us/programs.yaml b/policyengine_us/programs.yaml index 0f74596fd68..293197dfa4f 100644 --- a/policyengine_us/programs.yaml +++ b/policyengine_us/programs.yaml @@ -875,7 +875,7 @@ programs: full_name: New York Child Care Assistance Program variable: ny_ccap parameter_prefix: gov.states.ny.ocfs.ccap - notes: Models New York income eligibility, market rates, and the family share, including the foster-care and child-protective-services categorical routes, the 18 NYCRR 415.1(b) age extensions for special needs and court supervision, and the statutory family-share exceptions. The model prices excess periods for a sixth or seventh day of care, and for each day of care at or above the daily maximum hours, at the applicable daily or part-day rate under 24-OCFS-LCM-22. Without a county or county FIPS input, the model places a New York household in Albany County, in county group 2. That placement overstates rates for households in the 38 group 3 counties and understates them in New York City and the five group 1 counties. An UNKNOWN county falls to group 3, the lowest-rate group. The benefit requires childcare_hours_per_day and childcare_days_per_week as well as expenses, because OCFS sets market rates by duration of care; expenses alone yield no benefit. OCFS dropped hourly market rates on June 1, 2022 (22-OCFS-LCM-14); 18 NYCRR 415.9 and 24-OCFS-LCM-22 set weekly, daily and part-day rates only. Not modeled - the mandatory non-traditional-hours and homelessness payment differentials required by 18 NYCRR 415.9(f)(2)-(3) and the discretionary accreditation differential, the special-needs substituted market rate under 415.9(h)(4), safety net assistance as public assistance for the family-share exception, preventive services as distinct from protective services, public assistance in countable income (omitted to avoid a circular dependency through the TANF dependent care deduction), the required-work-activity condition on the 415.2(a)(1) guarantee of care to public-assistance families (public assistance enrollment alone satisfies the reason-for-care test), and the child-only assistance unit exception to the family share + notes: Models New York income eligibility, market rates, and the family share, including Family Assistance, Safety Net Assistance payments and adult SSI state supplements in countable income, the foster-care and child-protective-services categorical routes, the 18 NYCRR 415.1(b) age extensions for special needs and court supervision, and the statutory family-share exceptions. The model prices excess periods for a sixth or seventh day of care, and for each day of care at or above the daily maximum hours, at the applicable daily or part-day rate under 24-OCFS-LCM-22. Without a county or county FIPS input, the model places a New York household in Albany County, in county group 2. That placement overstates rates for households in the 38 group 3 counties and understates them in New York City and the five group 1 counties. An UNKNOWN county falls to group 3, the lowest-rate group. The benefit requires childcare_hours_per_day and childcare_days_per_week as well as expenses, because OCFS sets market rates by duration of care; expenses alone yield no benefit. OCFS dropped hourly market rates on June 1, 2022 (22-OCFS-LCM-14); 18 NYCRR 415.9 and 24-OCFS-LCM-22 set weekly, daily and part-day rates only. Not modeled - the mandatory non-traditional-hours and homelessness payment differentials required by 18 NYCRR 415.9(f)(2)-(3) and the discretionary accreditation differential, the special-needs substituted market rate under 415.9(h)(4), safety net assistance as public assistance for the family-share exception, preventive services as distinct from protective services, the required-work-activity condition on the 415.2(a)(1) guarantee of care to public-assistance families (public assistance enrollment alone satisfies the reason-for-care test), and the child-only assistance unit exception to the family share - state: OR status: complete name: Oregon ERDC diff --git a/policyengine_us/tests/core/test_ny_ccap_public_assistance_income_invariants.py b/policyengine_us/tests/core/test_ny_ccap_public_assistance_income_invariants.py new file mode 100644 index 00000000000..0782174918f --- /dev/null +++ b/policyengine_us/tests/core/test_ny_ccap_public_assistance_income_invariants.py @@ -0,0 +1,314 @@ +"""Check New York CCAP income, public assistance and child care together.""" + +import numpy as np +import pytest +from hypothesis import HealthCheck, given, settings +from hypothesis import strategies as st +from policyengine_core.reforms import Reform + +from policyengine_us import Simulation +from policyengine_us.model_api import SPMUnit, StateCode, Variable, YEAR, add, where +from policyengine_us.system import system as tax_benefit_system + + +YEARS = [2024, 2025, 2026] +TOLERANCE = 0.01 +MAIN_INCOME_SOURCES = ( + "employment_income", + "self_employment_income", + "sstb_self_employment_income", + "farm_operations_income", + "social_security", + "railroad_benefits", + "dividend_income", + "interest_income", + "rental_income", + "pension_income", + "military_retirement_income", + "total_unemployment_compensation", + "strike_benefits", + "workers_compensation", + "alimony_income", + "child_support_received", + "veterans_benefits", +) +PROPERTY_SETTINGS = settings( + max_examples=8, + deadline=None, + derandomize=True, + suppress_health_check=[HealthCheck.too_slow, HealthCheck.data_too_large], +) + + +class MainCountableIncome(Reform): + def apply(self): + # Preserve main's formula and source list as the compatibility oracle. + class ny_ccap_countable_income(Variable): + value_type = float + entity = SPMUnit + definition_period = YEAR + defined_for = StateCode.NY + + def formula(spm_unit, period, parameters): + p = parameters(period).gov.states.ny.ocfs.ccap.income.countable_income + countable = add(spm_unit, period, MAIN_INCOME_SOURCES) + person = spm_unit.members + is_child = person("is_child", period) + adult_ssi = where(is_child, 0, add(person, period, ["ssi"])) + excluded_earner = is_child & ~person("is_parent", period) + excluded_earnings = where( + excluded_earner, add(person, period, p.earned_sources), 0 + ) + return countable + spm_unit.sum(adult_ssi - excluded_earnings) + + self.update_variable(ny_ccap_countable_income) + + +@pytest.fixture(scope="module") +def system(): + return tax_benefit_system + + +@pytest.fixture(scope="module") +def main_system(system): + return MainCountableIncome(system) + + +@st.composite +def families(draw): + child_age = draw(st.integers(0, 18)) + return { + "earnings": draw(st.integers(0, 160_000)), + "business_income": draw(st.integers(-20_000, 20_000)), + "child_earnings": draw(st.integers(0, 15_000)), + "child_age": child_age, + "child_parent": child_age >= 12 and draw(st.booleans()), + "adult_ssi": draw(st.integers(0, 1_000)), + "child_ssi": draw(st.integers(0, 1_000)), + "expenses": draw(st.integers(0, 4_000)), + "market_rate": draw(st.integers(0, 4_000)), + "in_care": draw(st.booleans()), + "enrolled": draw(st.booleans()), + "takeup": draw(st.booleans()), + "low": draw(st.integers(0, 1_000)), + "increase": draw(st.integers(1, 1_000)), + } + + +def _monthly(year, amount): + return {f"{year}-{month:02d}": amount for month in range(1, 13)} + + +def _situation(cases, year): + situation = { + "people": {}, + "tax_units": {}, + "spm_units": {}, + "families": {}, + "marital_units": {}, + "households": {}, + } + for index, (family, amounts) in enumerate(cases): + adult, child = f"adult_{index}", f"child_{index}" + members = [adult, child] + situation["people"][adult] = { + "age": {year: 35}, + "is_parent": {year: True}, + "is_tax_unit_head": {year: True}, + "is_tax_unit_dependent": {year: False}, + "is_citizen_or_legal_immigrant": {year: True}, + "employment_income": {year: family["earnings"]}, + "self_employment_income": {year: family["business_income"]}, + "ssi": _monthly(year, family["adult_ssi"]), + "ny_ssp": _monthly(year, amounts.get("adult_ssp", 0)), + "childcare_hours_per_day": {year: 0}, + "ny_ccap_market_rate": _monthly(year, 0), + } + situation["people"][child] = { + "age": {year: family["child_age"]}, + "is_parent": {year: family["child_parent"]}, + "is_tax_unit_head": {year: False}, + "is_tax_unit_dependent": {year: True}, + "is_citizen_or_legal_immigrant": {year: True}, + "employment_income": {year: family["child_earnings"]}, + "ssi": _monthly(year, family["child_ssi"]), + "ny_ssp": _monthly(year, amounts.get("child_ssp", 0)), + "childcare_hours_per_day": {year: 8 if family["in_care"] else 0}, + "childcare_days_per_week": {year: 5 if family["in_care"] else 0}, + "ny_ccap_market_rate": _monthly(year, family["market_rate"]), + } + unit = { + "members": members, + "ny_safety_net_assistance": _monthly(year, amounts.get("safety_net", 0)), + "is_tanf_enrolled": _monthly(year, family["enrolled"]), + "takes_up_tanf_if_eligible": {year: family["takeup"]}, + "meets_ccdf_activity_test": {year: True}, + "is_ccdf_asset_eligible": {year: True}, + "spm_unit_pre_subsidy_childcare_expenses": {year: 12 * family["expenses"]}, + } + if amounts.get("family_assistance") is not None: + unit["ny_tanf"] = _monthly(year, amounts["family_assistance"]) + situation["spm_units"][f"unit_{index}"] = unit + for group in ("tax_units", "families"): + situation[group][f"{group}_{index}"] = {"members": members} + for person in members: + situation["marital_units"][person] = {"members": [person]} + situation["households"][f"household_{index}"] = { + "members": members, + "state_code": {year: "NY"}, + "county_str": {year: "NEW_YORK_COUNTY_NY"}, + } + return situation + + +def _calculate(system, cases, year): + simulation = Simulation( + tax_benefit_system=system, + situation=_situation(cases, year), + ) + outputs = { + "ny_ccap_countable_income": np.asarray( + simulation.calculate("ny_ccap_countable_income", year) + ), + "ny_ccap_family_share": np.asarray( + simulation.calculate("ny_ccap_family_share", f"{year}-10") + ), + "ny_ccap": np.asarray(simulation.calculate("ny_ccap", f"{year}-10")), + } + for name, values in outputs.items(): + assert np.isfinite(values).all(), f"{name} contains a nonfinite result" + return outputs + + +@PROPERTY_SETTINGS +@given(st.sampled_from(YEARS), st.lists(families(), min_size=2, max_size=5)) +def test_countable_income_weakly_rises_with_each_public_assistance_source( + system, year, units +): + cases = [] + expected_increases = [] + for family in units: + for source in ("family_assistance", "safety_net", "adult_ssp"): + for amount in (family["low"], family["low"] + family["increase"]): + cases.append((family, {"family_assistance": 0, source: amount})) + included = source != "family_assistance" or family["takeup"] + expected_increases.append(12 * family["increase"] * included) + income = _calculate(system, cases, year)["ny_ccap_countable_income"] + increases = income[1::2] - income[0::2] + assert (increases >= -TOLERANCE).all() + np.testing.assert_allclose(increases, expected_increases, atol=TOLERANCE, rtol=0) + + +@PROPERTY_SETTINGS +@given(st.sampled_from(YEARS), st.lists(families(), min_size=2, max_size=6)) +def test_zero_public_assistance_amounts_preserve_main_income_and_ccap( + system, main_system, year, units +): + cases = [(family, {"family_assistance": 0}) for family in units] + actual = _calculate(system, cases, year) + expected = _calculate(main_system, cases, year) + for name in actual: + np.testing.assert_allclose( + actual[name], expected[name], atol=TOLERANCE, rtol=0, err_msg=name + ) + + +@PROPERTY_SETTINGS +@given(st.sampled_from(YEARS), st.lists(families(), min_size=2, max_size=6)) +def test_a_childs_state_supplement_does_not_change_income_or_ccap(system, year, units): + cases = [] + for family in units: + minor_family = {**family, "child_age": min(family["child_age"], 17)} + for supplement in (0, family["low"] + family["increase"]): + cases.append( + (minor_family, {"family_assistance": 0, "child_ssp": supplement}) + ) + outputs = _calculate(system, cases, year) + for name, values in outputs.items(): + np.testing.assert_allclose( + values[0::2], values[1::2], atol=TOLERANCE, rtol=0, err_msg=name + ) + + +@PROPERTY_SETTINGS +@given(st.sampled_from(YEARS), st.lists(families(), min_size=2, max_size=6)) +def test_reported_public_assistance_keeps_the_family_share_zero(system, year, units): + cases = [ + ( + {**family, "enrolled": True}, + { + "family_assistance": family["low"] + family["increase"], + "safety_net": family["low"], + "adult_ssp": family["increase"], + }, + ) + for family in units + ] + outputs = _calculate(system, cases, year) + np.testing.assert_array_equal(outputs["ny_ccap_family_share"], 0) + assert (outputs["ny_ccap"] >= 0).all() + + +@PROPERTY_SETTINGS +@given(st.sampled_from(YEARS), st.lists(families(), min_size=2, max_size=6)) +def test_safety_net_receipt_alone_keeps_the_family_share_zero(system, year, units): + if "ny_safety_net_assistance_received" not in system.variables: + pytest.skip( + "Safety Net receipt and its waiver require the categorical routes build." + ) + cases = [ + ( + {**family, "enrolled": False, "takeup": False}, + { + "family_assistance": 0, + "safety_net": family["low"] + family["increase"], + }, + ) + for family in units + ] + situation = _situation(cases, year) + for unit in situation["spm_units"].values(): + unit["ny_safety_net_assistance_received"] = _monthly(year, True) + simulation = Simulation(tax_benefit_system=system, situation=situation) + np.testing.assert_array_equal( + simulation.calculate("ny_ccap_family_share", f"{year}-10"), 0 + ) + + +@pytest.mark.parametrize("year", YEARS) +def test_computed_family_assistance_with_childcare_expenses_avoids_federal_tanf( + system, year +): + family = { + "earnings": 0, + "business_income": 0, + "child_earnings": 0, + "child_age": 3, + "child_parent": False, + "adult_ssi": 0, + "child_ssi": 0, + "expenses": 1_000, + "market_rate": 2_000, + "in_care": True, + "enrolled": True, + "takeup": True, + } + situation = _situation([(family, {})], year) + situation["people"]["adult_0"]["pre_subsidy_rent"] = {year: 12_000} + situation["spm_units"]["unit_0"]["spm_unit_cash_assets"] = {year: 0} + simulation = Simulation(tax_benefit_system=system, situation=situation) + simulation.trace = True + + benefit = simulation.calculate("ny_ccap", f"{year}-10") + grant = simulation.calculate("ny_tanf", f"{year}-10") + income = simulation.calculate("ny_ccap_countable_income", year) + + assert (grant > 0).all() + assert (benefit > 0).all() + assert (benefit <= family["expenses"]).all() + np.testing.assert_allclose(income, 12 * grant, atol=TOLERANCE, rtol=0) + np.testing.assert_array_equal( + simulation.calculate("ny_ccap_family_share", f"{year}-10"), 0 + ) + assert simulation.tracer.get_nb_requests("tanf") == 0 + assert simulation.tracer.get_nb_requests("tanf_if_takes_up") == 0 diff --git a/policyengine_us/tests/policy/baseline/gov/states/ny/ocfs/ccap/ny_ccap_public_assistance_income.yaml b/policyengine_us/tests/policy/baseline/gov/states/ny/ocfs/ccap/ny_ccap_public_assistance_income.yaml new file mode 100644 index 00000000000..84c78f1f913 --- /dev/null +++ b/policyengine_us/tests/policy/baseline/gov/states/ny/ocfs/ccap/ny_ccap_public_assistance_income.yaml @@ -0,0 +1,208 @@ +# New York counts public assistance under 18 NYCRR 404.5(b)(5)(vi). +# Annual grant inputs below isolate each source from benefit eligibility. + +- name: New York counts Family Assistance income. + period: 2025 + input: + age: 30 + employment_income: 10_000 + ny_tanf: 6_000 + tanf: 99_000 + ny_ssp: 0 + state_code: NY + output: + # $10,000 earnings + $6,000 New York grant = $16,000. + ny_ccap_countable_income: 16_000 + +- name: New York counts a Safety Net Assistance amount without reported receipt. + period: 2025 + input: + age: 30 + employment_income: 10_000 + ny_tanf: 0 + ny_safety_net_assistance: 2_400 + ny_ssp: 0 + state_code: NY + output: + # $10,000 earnings + $2,400 assistance = $12,400. + ny_ccap_countable_income: 12_400 + +- name: New York counts an adult's state supplement. + period: 2025 + input: + age: 30 + employment_income: 10_000 + ny_tanf: 0 + ssi: 0 + ny_ssp: 1_200 + state_code: NY + output: + # $10,000 earnings + $1,200 state supplement = $11,200. + ny_ccap_countable_income: 11_200 + +- name: New York adds Family Assistance, Safety Net Assistance, and an adult supplement. + period: 2025 + input: + age: 30 + employment_income: 10_000 + ny_tanf: 6_000 + ny_safety_net_assistance: 2_400 + ssi: 0 + ny_ssp: 1_200 + state_code: NY + output: + # $10,000 + $6,000 + $2,400 + $1,200 = $19,600. + ny_ccap_countable_income: 19_600 + +- name: New York converts an adult's annual SSI and supplement into monthly income. + period: 2025-01 + absolute_error_margin: 0.01 + input: + age: 40 + is_disabled: true + employment_income: 12_000 + ny_tanf: {2025: 0} + ssi: {2025: 10_800} + ny_ssp: {2025: 1_200} + state_code: NY + output: + # $12,000 earnings + $10,800 SSI + $1,200 supplement = $24,000/year. + # $24,000 / 12 = $2,000/month. + ny_ccap_countable_income: + 2025: 24_000 + 2025-01: 2_000 + +- name: New York excludes a child's SSI and state supplement. + period: 2025 + input: + people: + parent: + age: 30 + employment_income: 10_000 + ny_ssp: 0 + child: + age: 5 + ssi: 4_800 + ny_ssp: 1_200 + spm_units: + unit: + members: [parent, child] + ny_tanf: 0 + households: + household: + members: [parent, child] + state_code: NY + output: + # $10,000 earnings + $0 child SSI + $0 child supplement = $10,000. + ny_ccap_countable_income: 10_000 + +- name: New York counts only the adult's SSI and supplement in a mixed family. + period: 2025 + input: + people: + parent: + age: 30 + employment_income: 10_000 + ssi: 6_000 + ny_ssp: 1_200 + child: + age: 5 + ssi: 4_800 + ny_ssp: 600 + spm_units: + unit: + members: [parent, child] + ny_tanf: 0 + households: + household: + members: [parent, child] + state_code: NY + output: + # $10,000 earnings + $6,000 adult SSI + $1,200 adult supplement = $17,200. + ny_ccap_countable_income: 17_200 + +- name: New York counts SSI and the supplement for an eighteen year old. + period: 2025 + input: + people: + parent: + age: 40 + employment_income: 10_000 + ny_ssp: 0 + adult_child: + age: 18 + ssi: 4_800 + ny_ssp: 1_200 + spm_units: + unit: + members: [parent, adult_child] + ny_tanf: 0 + households: + household: + members: [parent, adult_child] + state_code: NY + output: + # $10,000 earnings + $4,800 adult SSI + $1,200 supplement = $16,000. + ny_ccap_countable_income: 16_000 + +- name: Declining TANF removes Family Assistance while other assistance still counts. + period: 2025 + input: + age: 30 + employment_income: 10_000 + ny_tanf: 6_000 + takes_up_tanf_if_eligible: false + ny_safety_net_assistance: 2_400 + ny_ssp: 1_200 + state_code: NY + output: + # $10,000 earnings + $2,400 assistance + $1,200 supplement = $13,600. + ny_ccap_countable_income: 13_600 + +- name: A Family Assistance family receives child care with its computed grant. + period: 2025-01 + absolute_error_margin: 0.01 + input: + people: + parent: + age: 30 + immigration_status: CITIZEN + employment_income_before_lsr: 0 + pre_subsidy_rent: 0 + ssi: {2025: 0} + ny_ssp: {2025: 0} + child: + age: 5 + immigration_status: CITIZEN + pre_subsidy_childcare_expenses: 24_000 + childcare_hours_per_day: 8 + childcare_days_per_week: 5 + ny_ccap_market_rate: {2025: 12_000} + ssi: {2025: 0} + ny_ssp: {2025: 0} + spm_units: + unit: + members: [parent, child] + is_tanf_enrolled: {2025: true} + takes_up_tanf_if_eligible: true + households: + household: + members: [parent, child] + state_code: NY + county_str: NEW_YORK_COUNTY_NY + output: + # Two people receive $252 + $22.50 + $17 = $291.50/month before shelter. + # Zero earnings, other income, housing costs, and assets leave the full grant. + ny_tanf: + 2025-01: 291.50 + 2025: 3_498 + ny_ccap_countable_income: + 2025-01: 291.50 + 2025: 3_498 + # Public assistance enrollment waives the family share. + ny_ccap_family_share: 0 + # min($24,000 / 12 expenses, $1,000 rate) - $0 share = $1,000/month. + ny_ccap: 1_000 + # $24,000 expenses - 12 * $1,000 CCAP = $12,000/year after subsidy. + childcare_expenses: + 2025: 12_000 diff --git a/policyengine_us/tests/policy/baseline/gov/states/ny/ocfs/ccap/ny_ccap_public_assistance_income_abolition.yaml b/policyengine_us/tests/policy/baseline/gov/states/ny/ocfs/ccap/ny_ccap_public_assistance_income_abolition.yaml new file mode 100644 index 00000000000..1c24c25f2f7 --- /dev/null +++ b/policyengine_us/tests/policy/baseline/gov/states/ny/ocfs/ccap/ny_ccap_public_assistance_income_abolition.yaml @@ -0,0 +1,15 @@ +# Keep the TANF parameter reform in its own process to bound memory. + +- name: Abolishing TANF removes Family Assistance while other assistance still counts. + period: 2025 + input: + gov.hhs.tanf.abolish_tanf: true + age: 30 + employment_income: 10_000 + ny_tanf: 6_000 + ny_safety_net_assistance: 2_400 + ny_ssp: 1_200 + state_code: NY + output: + # $10,000 earnings + $2,400 assistance + $1,200 supplement = $13,600. + ny_ccap_countable_income: 13_600 diff --git a/policyengine_us/variables/gov/states/ny/ocfs/ccap/ny_ccap_countable_income.py b/policyengine_us/variables/gov/states/ny/ocfs/ccap/ny_ccap_countable_income.py index 694af81b98d..2190d8cec71 100644 --- a/policyengine_us/variables/gov/states/ny/ocfs/ccap/ny_ccap_countable_income.py +++ b/policyengine_us/variables/gov/states/ny/ocfs/ccap/ny_ccap_countable_income.py @@ -9,13 +9,14 @@ class ny_ccap_countable_income(Variable): unit = USD defined_for = StateCode.NY documentation = ( - "Income counted for New York Child Care Assistance Program income " - "eligibility and the family share. New York defines countable income " - "in 18 NYCRR 404.5(b)(5) rather than in Part 415, which contains no " - "income-composition rule. Public assistance is countable under " - "404.5(b)(5)(vi) but is omitted here because counting it creates a " - "CCAP-to-TANF circular dependency through the TANF dependent care " - "deduction; see countable_income/sources.yaml. 404.5(b)(5) measures " + "New York counts income for Child Care Assistance Program eligibility " + "and the family share under 18 NYCRR 404.5(b)(5). Count Family " + "Assistance through ny_tanf, with TANF take-up and abolition controls, " + "to avoid other states' dependent care deductions in the federal " + "TANF aggregate. Count reported Safety Net Assistance amounts and " + "adults' SSI and state supplements under 404.5(b)(5)(vi). OCFS " + "excludes children's SSI and state supplements under " + "404.5(b)(6)(xxi). 404.5(b)(5) measures " "income over the 415.1(l) child care services unit, which splits " "cohabiting adults without a common child into separate units, treats " "an 18-year-old as an adult outside the parent's unit, and reduces to " @@ -24,6 +25,7 @@ class ny_ccap_countable_income(Variable): "read it with the bare period and Core divides it." ) reference = ( + "https://www.law.cornell.edu/regulations/new-york/18-NYCRR-404.5", "https://ocfs.ny.gov/programs/childcare/regulations/404-Eligibility.pdf#page=10", "https://ocfs.ny.gov/main/policies/external/2023/adm/23-OCFS-ADM-18.pdf#page=4", ) @@ -31,12 +33,20 @@ class ny_ccap_countable_income(Variable): def formula(spm_unit, period, parameters): p = parameters(period).gov.states.ny.ocfs.ccap.income.countable_income countable = add(spm_unit, period, p.sources) + # The federal TANF aggregate reads other states' dependent care + # deductions, which reach CCAP through child care subsidies. + # New York's own grant avoids that path. Preserve TANF's controls. + family_assistance = add(spm_unit, period, ["ny_tanf"]) * spm_unit( + "takes_up_tanf_if_eligible", period + ) + family_assistance = where( + parameters(period).gov.hhs.tanf.abolish_tanf, 0, family_assistance + ) person = spm_unit.members is_child = person("is_child", period) - # ssi is monthly, so add() sums it across the year. - # 404.5(b)(6)(xxi) excludes the SSI of any child in the unit; an - # adult's SSI stays countable. - adult_ssi = where(is_child, 0, add(person, period, ["ssi"])) + # Both payments are monthly, so add() sums them across the year. + # OCFS's 404.5(b)(6)(xxi) excludes children's SSI and supplements. + adult_ssi = where(is_child, 0, add(person, period, ["ssi", "ny_ssp"])) # 404.5(b)(6)(xiii) excludes the earnings of a dependent child under # 18 who is not legally responsible for the child needing care, and # directs that no inquiry be made into them. is_child is age under 18. @@ -44,4 +54,6 @@ def formula(spm_unit, period, parameters): excluded_earnings = where( excluded_earner, add(person, period, p.earned_sources), 0 ) - return countable + spm_unit.sum(adult_ssi - excluded_earnings) + return ( + countable + family_assistance + spm_unit.sum(adult_ssi - excluded_earnings) + ) diff --git a/policyengine_us/variables/gov/states/ny/ocfs/ccap/ny_safety_net_assistance.py b/policyengine_us/variables/gov/states/ny/ocfs/ccap/ny_safety_net_assistance.py new file mode 100644 index 00000000000..9e884e78e32 --- /dev/null +++ b/policyengine_us/variables/gov/states/ny/ocfs/ccap/ny_safety_net_assistance.py @@ -0,0 +1,21 @@ +from policyengine_us.model_api import * + + +class ny_safety_net_assistance(Variable): + value_type = float + entity = SPMUnit + label = "New York Safety Net Assistance payments" + definition_period = MONTH + set_input = set_input_divide_by_period + calculate_output = calculate_output_add + default_value = 0 + unit = USD + defined_for = StateCode.NY + documentation = ( + "Records Safety Net Assistance payments received by the SPM unit " + "during the month. New York counts these payments as public " + "assistance income for child care under 18 NYCRR 404.5(b)(5)(vi). " + "Record a parent's or caretaker relative's receipt separately with " + "ny_safety_net_assistance_received for CCAP categorical routes." + ) + reference = "https://www.law.cornell.edu/regulations/new-york/18-NYCRR-404.5" diff --git a/source_conflicts/candidates.yaml b/source_conflicts/candidates.yaml index 9d02eda84fd..18d9511af63 100644 --- a/source_conflicts/candidates.yaml +++ b/source_conflicts/candidates.yaml @@ -14335,3 +14335,34 @@ candidates: - https://github.com/PolicyEngine/policyengine-us/pull/10053 state: ruled note: Neither source prescribes a fallback when residence data are missing. Keep the existing false default. +- id: us-ny:ccap-child-ssi-state-supplement-exclusion + program: child-care-assistance + years: + from: 2021 + type: calendar + question: Does New York exclude children's SSI and state supplements from child care assistance income under + OCFS's regulatory compilation when LII omits the child exclusion? + sources: + - kind: regulation + citation: OCFS compilation of 18 NYCRR 404.5(b)(5)(vi) and (b)(6)(xxi), current October 1, 2023, pages 10-12 + url: https://ocfs.ny.gov/programs/childcare/regulations/404-Eligibility.pdf#page=12 + - kind: regulation + citation: LII reproduction of 18 NYCRR 404.5(b)(5)(vi) and (b)(6), retrieved November 12, 2026 + url: https://www.law.cornell.edu/regulations/new-york/18-NYCRR-404.5 + readings: + statute: No statute supplied; OCFS excludes children's SSI, including state supplemental payments, from child + care assistance income under both the income-source provision and the exclusions provision. + other: LII includes SSI and state supplemental payments among public assistance income sources, omits the child + exception, and ends the exclusions at paragraph (xx). + pe_us: + follows: gap-fill + code: + - policyengine_us/variables/gov/states/ny/ocfs/ccap/ny_ccap_countable_income.py + - policyengine_us/parameters/gov/states/ny/ocfs/ccap/income/countable_income/sources.yaml + prs: [] + state: ruled + note: PolicyEngine follows OCFS's regulatory compilation and excludes children's SSI and state supplements while + counting adults' benefits. The captures preserve the relevant OCFS provision and LII's end-of-exclusions text + under source_conflicts/sources/us-ny/. The OCFS capture records archive snapshot 20240522174247. The years begin + with the model's first countable-income source parameter on October 1, 2021. The compilation confirms the + exclusion by October 1, 2023, without establishing its original effective date. diff --git a/source_conflicts/sources/us-ny/lii-404-5-2026-exclusions-end.txt b/source_conflicts/sources/us-ny/lii-404-5-2026-exclusions-end.txt new file mode 100644 index 00000000000..a9e634e19ff --- /dev/null +++ b/source_conflicts/sources/us-ny/lii-404-5-2026-exclusions-end.txt @@ -0,0 +1,7 @@ +Source: https://www.law.cornell.edu/regulations/new-york/18-NYCRR-404.5 +Retrieved November 12, 2026. Extracted the final paragraph of subsection (b)(6) and the next subsection heading from LII's HTML. +LII ends subsection (b)(6) at paragraph (xx) and publishes no paragraph (xxi). + +(xx) disaster relief payments other than unemployment compensation. + +(c) Eligibility without regard to financial circumstances. diff --git a/source_conflicts/sources/us-ny/ocfs-404-eligibility-2023-child-ssi.txt b/source_conflicts/sources/us-ny/ocfs-404-eligibility-2023-child-ssi.txt new file mode 100644 index 00000000000..7579db304a7 --- /dev/null +++ b/source_conflicts/sources/us-ny/ocfs-404-eligibility-2023-child-ssi.txt @@ -0,0 +1,9 @@ +Source: https://ocfs.ny.gov/programs/childcare/regulations/404-Eligibility.pdf#page=12 +Archive: https://web.archive.org/web/20240522174247id_/https://ocfs.ny.gov/programs/childcare/regulations/404-Eligibility.pdf +OCFS compilation current as of October 1, 2023, pages 11-12. Extracted with pdftotext -layout from the archived PDF. +The excerpts retain the exclusion heading and the start of paragraph (xxi). + +(6) Exclusions from monthly gross income. + +(xxi) SSI (including state supplemental payments) received by any child(ren) in +the child care services unit From 63ff4749a5674dbd25fc2d5ca9e9fea036680b28 Mon Sep 17 00:00:00 2001 From: Max Ghenis Date: Thu, 12 Nov 2026 00:49:20 -0500 Subject: [PATCH 02/11] Check New York CCAP against unit child care expenses Co-Authored-By: Claude Opus 5.5 --- ...come.fixed.md => ny-ccap-public-assistance-income.added.md} | 0 .../states/ny/ocfs/ccap/ny_ccap_public_assistance_income.yaml | 3 ++- source_conflicts/candidates.yaml | 3 ++- 3 files changed, 4 insertions(+), 2 deletions(-) rename changelog.d/{ny-ccap-public-assistance-income.fixed.md => ny-ccap-public-assistance-income.added.md} (100%) diff --git a/changelog.d/ny-ccap-public-assistance-income.fixed.md b/changelog.d/ny-ccap-public-assistance-income.added.md similarity index 100% rename from changelog.d/ny-ccap-public-assistance-income.fixed.md rename to changelog.d/ny-ccap-public-assistance-income.added.md diff --git a/policyengine_us/tests/policy/baseline/gov/states/ny/ocfs/ccap/ny_ccap_public_assistance_income.yaml b/policyengine_us/tests/policy/baseline/gov/states/ny/ocfs/ccap/ny_ccap_public_assistance_income.yaml index 84c78f1f913..cb2af4ae815 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/ny/ocfs/ccap/ny_ccap_public_assistance_income.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/ny/ocfs/ccap/ny_ccap_public_assistance_income.yaml @@ -174,7 +174,6 @@ child: age: 5 immigration_status: CITIZEN - pre_subsidy_childcare_expenses: 24_000 childcare_hours_per_day: 8 childcare_days_per_week: 5 ny_ccap_market_rate: {2025: 12_000} @@ -185,6 +184,8 @@ members: [parent, child] is_tanf_enrolled: {2025: true} takes_up_tanf_if_eligible: true + meets_ccdf_activity_test: true + spm_unit_pre_subsidy_childcare_expenses: 24_000 households: household: members: [parent, child] diff --git a/source_conflicts/candidates.yaml b/source_conflicts/candidates.yaml index 18d9511af63..9689a6e0a37 100644 --- a/source_conflicts/candidates.yaml +++ b/source_conflicts/candidates.yaml @@ -14359,7 +14359,8 @@ candidates: code: - policyengine_us/variables/gov/states/ny/ocfs/ccap/ny_ccap_countable_income.py - policyengine_us/parameters/gov/states/ny/ocfs/ccap/income/countable_income/sources.yaml - prs: [] + prs: + - https://github.com/PolicyEngine/policyengine-us/pull/10827 state: ruled note: PolicyEngine follows OCFS's regulatory compilation and excludes children's SSI and state supplements while counting adults' benefits. The captures preserve the relevant OCFS provision and LII's end-of-exclusions text From ca487814e37526550696ca10a45086a6a652b625 Mon Sep 17 00:00:00 2001 From: Max Ghenis Date: Thu, 12 Nov 2026 00:55:26 -0500 Subject: [PATCH 03/11] Describe New York CCAP income units and annual aggregation Co-Authored-By: Claude Opus 5.5 --- .../ny/ocfs/ccap/ny_ccap_countable_income.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/policyengine_us/variables/gov/states/ny/ocfs/ccap/ny_ccap_countable_income.py b/policyengine_us/variables/gov/states/ny/ocfs/ccap/ny_ccap_countable_income.py index 2190d8cec71..dc426507bfb 100644 --- a/policyengine_us/variables/gov/states/ny/ocfs/ccap/ny_ccap_countable_income.py +++ b/policyengine_us/variables/gov/states/ny/ocfs/ccap/ny_ccap_countable_income.py @@ -16,13 +16,13 @@ class ny_ccap_countable_income(Variable): "TANF aggregate. Count reported Safety Net Assistance amounts and " "adults' SSI and state supplements under 404.5(b)(5)(vi). OCFS " "excludes children's SSI and state supplements under " - "404.5(b)(6)(xxi). 404.5(b)(5) measures " - "income over the 415.1(l) child care services unit, which splits " - "cohabiting adults without a common child into separate units, treats " - "an 18-year-old as an adult outside the parent's unit, and reduces to " - "the children alone when they live with no parent; the SPM unit used " - "here merges those cases. Defined annually so the monthly consumers " - "read it with the bare period and Core divides it." + "404.5(b)(6)(xxi). OCFS uses the child care services unit under " + "415.1(l). It separates cohabiting adults without a common child " + "and treats an 18-year-old as an adult outside the parent's unit. " + "When children live with no parent, OCFS counts only the children " + "in their unit. PolicyEngine uses the SPM unit, which combines " + "those cases. Monthly consumers read this annual income with the " + "bare period and Core divides it." ) reference = ( "https://www.law.cornell.edu/regulations/new-york/18-NYCRR-404.5", From 8c6bb0d66cbf2dd537f2c75a11574c1aa4dd25da Mon Sep 17 00:00:00 2001 From: Max Ghenis Date: Thu, 12 Nov 2026 01:23:47 -0500 Subject: [PATCH 04/11] Isolate existing New York CCAP income-source cases Co-Authored-By: Claude Opus 5.5 --- .../ocfs/ccap/ny_ccap_countable_income.yaml | 43 +++++++++++++++++-- 1 file changed, 40 insertions(+), 3 deletions(-) diff --git a/policyengine_us/tests/policy/baseline/gov/states/ny/ocfs/ccap/ny_ccap_countable_income.yaml b/policyengine_us/tests/policy/baseline/gov/states/ny/ocfs/ccap/ny_ccap_countable_income.yaml index 24492b127c4..4ceaf06d1a1 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/ny/ocfs/ccap/ny_ccap_countable_income.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/ny/ocfs/ccap/ny_ccap_countable_income.yaml @@ -1,6 +1,7 @@ # 18 NYCRR 404.5(b)(5) sets what New York counts. Each case adds one source # on top of the same $10,000 of employment income so that deleting any single # entry from countable_income/sources.yaml fails a test. +# Set Family Assistance and state supplements to zero to isolate these sources. - name: Case 1, employment income alone. period: 2025 @@ -8,10 +9,12 @@ people: parent: age: 30 + ny_ssp: 0 employment_income: 10_000 spm_units: spm_unit: members: [parent] + ny_tanf: 0 households: household: members: [parent] @@ -25,11 +28,13 @@ people: parent: age: 30 + ny_ssp: 0 employment_income: 10_000 child_support_received: 5_000 spm_units: spm_unit: members: [parent] + ny_tanf: 0 households: household: members: [parent] @@ -43,11 +48,13 @@ people: parent: age: 30 + ny_ssp: 0 employment_income: 10_000 unemployment_compensation: 4_000 spm_units: spm_unit: members: [parent] + ny_tanf: 0 households: household: members: [parent] @@ -61,11 +68,13 @@ people: parent: age: 30 + ny_ssp: 0 employment_income: 10_000 workers_compensation: 3_000 spm_units: spm_unit: members: [parent] + ny_tanf: 0 households: household: members: [parent] @@ -79,11 +88,13 @@ people: parent: age: 30 + ny_ssp: 0 employment_income: 10_000 social_security_retirement: 6_000 spm_units: spm_unit: members: [parent] + ny_tanf: 0 households: household: members: [parent] @@ -99,11 +110,13 @@ people: parent: age: 30 + ny_ssp: 0 employment_income: 10_000 veterans_benefits: 7_000 spm_units: spm_unit: members: [parent] + ny_tanf: 0 households: household: members: [parent] @@ -119,11 +132,13 @@ people: parent: age: 30 + ny_ssp: 0 employment_income: 10_000 ssi: 1_000 spm_units: spm_unit: members: [parent] + ny_tanf: 0 households: household: members: [parent] @@ -137,13 +152,16 @@ people: parent: age: 30 + ny_ssp: 0 employment_income: 10_000 child: age: 5 + ny_ssp: 0 ssi: 1_000 spm_units: spm_unit: members: [parent, child] + ny_tanf: 0 households: household: members: [parent, child] @@ -151,18 +169,20 @@ output: ny_ccap_countable_income: 10_000 -# TANF is countable under 404.5(b)(5)(vi) but is deliberately omitted to -# avoid the CCAP-to-TANF circular dependency; this pins that decision. -- name: Case 9, TANF is not counted. +# CCAP reads New York Family Assistance directly. The federal aggregate +# does not supply a separate income source. +- name: Case 9, the federal TANF aggregate is not counted separately. period: 2025 input: people: parent: age: 30 + ny_ssp: 0 employment_income: 10_000 spm_units: spm_unit: members: [parent] + ny_tanf: 0 tanf: 6_000 households: household: @@ -179,11 +199,13 @@ people: parent: age: 30 + ny_ssp: 0 employment_income: 10_000 long_term_capital_gains: 20_000 spm_units: spm_unit: members: [parent] + ny_tanf: 0 households: household: members: [parent] @@ -198,11 +220,13 @@ people: parent: age: 30 + ny_ssp: 0 employment_income: 10_000 railroad_benefits: 8_000 spm_units: spm_unit: members: [parent] + ny_tanf: 0 households: household: members: [parent] @@ -218,13 +242,16 @@ people: parent: age: 30 + ny_ssp: 0 employment_income: 10_000 child: age: 16 + ny_ssp: 0 employment_income: 8_000 spm_units: spm_unit: members: [parent, child] + ny_tanf: 0 households: household: members: [parent, child] @@ -239,13 +266,16 @@ people: parent: age: 30 + ny_ssp: 0 employment_income: 10_000 other: age: 18 + ny_ssp: 0 employment_income: 8_000 spm_units: spm_unit: members: [parent, other] + ny_tanf: 0 households: household: members: [parent, other] @@ -261,14 +291,17 @@ people: parent: age: 30 + ny_ssp: 0 employment_income: 10_000 ssi: 1_000 child: age: 5 + ny_ssp: 0 ssi: 1_000 spm_units: spm_unit: members: [parent, child] + ny_tanf: 0 households: household: members: [parent, child] @@ -282,10 +315,12 @@ people: parent: age: 30 + ny_ssp: 0 self_employment_income: -60_000 spm_units: spm_unit: members: [parent] + ny_tanf: 0 households: household: members: [parent] @@ -301,11 +336,13 @@ people: parent: age: 30 + ny_ssp: 0 employment_income: 10_000 military_retirement_pay_survivors: 6_000 spm_units: spm_unit: members: [parent] + ny_tanf: 0 households: household: members: [parent] From 084dbd5d6446ab6f2c18cb6a15dac13ac14d4e3d Mon Sep 17 00:00:00 2001 From: Max Ghenis Date: Thu, 12 Nov 2026 01:27:39 -0500 Subject: [PATCH 05/11] Record New York rulemaking for the child SSI exclusion Co-Authored-By: Claude Opus 5.5 --- .../ny/ocfs/ccap/ny_ccap_countable_income.py | 5 ++++- source_conflicts/candidates.yaml | 20 +++++++++++++++---- .../us-ny/dos-ccap-adoption-2024-06-12.txt | 7 +++++++ .../us-ny/dos-ccap-child-ssi-2024-02-28.txt | 6 ++++++ .../us-ny/dos-ccap-emergency-2023-10-18.txt | 6 ++++++ 5 files changed, 39 insertions(+), 5 deletions(-) create mode 100644 source_conflicts/sources/us-ny/dos-ccap-adoption-2024-06-12.txt create mode 100644 source_conflicts/sources/us-ny/dos-ccap-child-ssi-2024-02-28.txt create mode 100644 source_conflicts/sources/us-ny/dos-ccap-emergency-2023-10-18.txt diff --git a/policyengine_us/variables/gov/states/ny/ocfs/ccap/ny_ccap_countable_income.py b/policyengine_us/variables/gov/states/ny/ocfs/ccap/ny_ccap_countable_income.py index dc426507bfb..1a39eb34aaa 100644 --- a/policyengine_us/variables/gov/states/ny/ocfs/ccap/ny_ccap_countable_income.py +++ b/policyengine_us/variables/gov/states/ny/ocfs/ccap/ny_ccap_countable_income.py @@ -16,7 +16,8 @@ class ny_ccap_countable_income(Variable): "TANF aggregate. Count reported Safety Net Assistance amounts and " "adults' SSI and state supplements under 404.5(b)(5)(vi). OCFS " "excludes children's SSI and state supplements under " - "404.5(b)(6)(xxi). OCFS uses the child care services unit under " + "404.5(b)(6)(xxi), which OCFS retained when adopting the rule " + "permanently on June 12, 2024. OCFS uses the child care services unit under " "415.1(l). It separates cohabiting adults without a common child " "and treats an 18-year-old as an adult outside the parent's unit. " "When children live with no parent, OCFS counts only the children " @@ -28,6 +29,8 @@ class ny_ccap_countable_income(Variable): "https://www.law.cornell.edu/regulations/new-york/18-NYCRR-404.5", "https://ocfs.ny.gov/programs/childcare/regulations/404-Eligibility.pdf#page=10", "https://ocfs.ny.gov/main/policies/external/2023/adm/23-OCFS-ADM-18.pdf#page=4", + "https://dos.ny.gov/system/files/documents/2024/02/022824.pdf#page=8", + "https://dos.ny.gov/system/files/documents/2024/06/061224.pdf#page=7", ) def formula(spm_unit, period, parameters): diff --git a/source_conflicts/candidates.yaml b/source_conflicts/candidates.yaml index 9689a6e0a37..635a7362028 100644 --- a/source_conflicts/candidates.yaml +++ b/source_conflicts/candidates.yaml @@ -14349,6 +14349,15 @@ candidates: - kind: regulation citation: LII reproduction of 18 NYCRR 404.5(b)(5)(vi) and (b)(6), retrieved November 12, 2026 url: https://www.law.cornell.edu/regulations/new-york/18-NYCRR-404.5 + - kind: rulemaking + citation: New York State Register, October 18, 2023, CFS-42-23-00002-EP, printed page 1 + url: https://dos.ny.gov/system/files/documents/2023/10/101823.pdf#page=7 + - kind: rulemaking + citation: New York State Register, February 28, 2024, CFS-42-23-00002-ERP, printed pages 1-2 + url: https://dos.ny.gov/system/files/documents/2024/02/022824.pdf#page=8 + - kind: rulemaking + citation: New York State Register, June 12, 2024, CFS-42-23-00002-A, printed page 1 + url: https://dos.ny.gov/system/files/documents/2024/06/061224.pdf#page=7 readings: statute: No statute supplied; OCFS excludes children's SSI, including state supplemental payments, from child care assistance income under both the income-source provision and the exclusions provision. @@ -14363,7 +14372,10 @@ candidates: - https://github.com/PolicyEngine/policyengine-us/pull/10827 state: ruled note: PolicyEngine follows OCFS's regulatory compilation and excludes children's SSI and state supplements while - counting adults' benefits. The captures preserve the relevant OCFS provision and LII's end-of-exclusions text - under source_conflicts/sources/us-ny/. The OCFS capture records archive snapshot 20240522174247. The years begin - with the model's first countable-income source parameter on October 1, 2021. The compilation confirms the - exclusion by October 1, 2023, without establishing its original effective date. + counting adults' benefits. OCFS put the emergency amendment into effect on October 1, 2023 and retained the + child exclusion in the February 2024 revised rule. OCFS adopted that rule permanently, without further changes, + effective June 12, 2024. The captures under source_conflicts/sources/us-ny/ preserve the OCFS provision, LII's + end-of-exclusions text and the three rulemaking notices. The OCFS compilation capture records archive snapshot + 20240522174247; the Department of State serves the rulemaking notices directly. The years begin with the model's + first countable-income source parameter on October 1, 2021. We have not verified the exclusion before October + 2023 or the current consolidated 2026 text. Westlaw returned HTTP 403 when we requested its regulatory text. diff --git a/source_conflicts/sources/us-ny/dos-ccap-adoption-2024-06-12.txt b/source_conflicts/sources/us-ny/dos-ccap-adoption-2024-06-12.txt new file mode 100644 index 00000000000..4455b3dfa60 --- /dev/null +++ b/source_conflicts/sources/us-ny/dos-ccap-adoption-2024-06-12.txt @@ -0,0 +1,7 @@ +Source: https://dos.ny.gov/system/files/documents/2024/06/061224.pdf#page=7 +Retrieved November 12, 2026 from the New York Department of State. +Physical PDF page 7, printed page 1. OCFS filed permanent adoption CFS-42-23-00002-A on May 23, 2024, effective June 12, 2024. +Extracted the final-rule comparison and its link to the previously published revised rule; joined wrapped lines. + +Final rule as compared with last published rule: No changes. +Revised rule making(s) were previously published in the State Register on February 28, 2024. diff --git a/source_conflicts/sources/us-ny/dos-ccap-child-ssi-2024-02-28.txt b/source_conflicts/sources/us-ny/dos-ccap-child-ssi-2024-02-28.txt new file mode 100644 index 00000000000..dc708f63247 --- /dev/null +++ b/source_conflicts/sources/us-ny/dos-ccap-child-ssi-2024-02-28.txt @@ -0,0 +1,6 @@ +Source: https://dos.ny.gov/system/files/documents/2024/02/022824.pdf#page=8 +Retrieved November 12, 2026 from the New York Department of State. +Physical PDF pages 7-8, printed pages 1-2. OCFS revised emergency rule CFS-42-23-00002-ERP took effect February 13, 2024. +Extracted the child-income exclusion from the rule summary on physical page 8; joined wrapped lines and removed line-end hyphenation. + +exclude Supplemental Security Income, including state supplemental payments, received by any child(ren) in the household from monthly gross income calculations for child care assistance. diff --git a/source_conflicts/sources/us-ny/dos-ccap-emergency-2023-10-18.txt b/source_conflicts/sources/us-ny/dos-ccap-emergency-2023-10-18.txt new file mode 100644 index 00000000000..c81f6c7c3be --- /dev/null +++ b/source_conflicts/sources/us-ny/dos-ccap-emergency-2023-10-18.txt @@ -0,0 +1,6 @@ +Source: https://dos.ny.gov/system/files/documents/2023/10/101823.pdf#page=7 +Retrieved November 12, 2026 from the New York Department of State. +Physical PDF page 7, printed page 1. Extracted the rule identifier and effective-date fields from the emergency/proposed notice for Parts 404 and 415. + +I.D. No. CFS-42-23-00002-EP +Effective Date: 2023-10-01 From 928dcd5bc1c4bbea996578c2c87223783d6cb6bb Mon Sep 17 00:00:00 2001 From: Max Ghenis Date: Thu, 12 Nov 2026 01:30:51 -0500 Subject: [PATCH 06/11] Share unchanged parameters in the CCAP compatibility oracle Co-Authored-By: Claude Opus 5.5 --- ...cap_public_assistance_income_invariants.py | 47 +++++++++---------- 1 file changed, 23 insertions(+), 24 deletions(-) diff --git a/policyengine_us/tests/core/test_ny_ccap_public_assistance_income_invariants.py b/policyengine_us/tests/core/test_ny_ccap_public_assistance_income_invariants.py index 0782174918f..8c023f01315 100644 --- a/policyengine_us/tests/core/test_ny_ccap_public_assistance_income_invariants.py +++ b/policyengine_us/tests/core/test_ny_ccap_public_assistance_income_invariants.py @@ -4,10 +4,10 @@ import pytest from hypothesis import HealthCheck, given, settings from hypothesis import strategies as st -from policyengine_core.reforms import Reform from policyengine_us import Simulation from policyengine_us.model_api import SPMUnit, StateCode, Variable, YEAR, add, where +from policyengine_us.spm import share_spm_policy from policyengine_us.system import system as tax_benefit_system @@ -40,28 +40,23 @@ ) -class MainCountableIncome(Reform): - def apply(self): - # Preserve main's formula and source list as the compatibility oracle. - class ny_ccap_countable_income(Variable): - value_type = float - entity = SPMUnit - definition_period = YEAR - defined_for = StateCode.NY - - def formula(spm_unit, period, parameters): - p = parameters(period).gov.states.ny.ocfs.ccap.income.countable_income - countable = add(spm_unit, period, MAIN_INCOME_SOURCES) - person = spm_unit.members - is_child = person("is_child", period) - adult_ssi = where(is_child, 0, add(person, period, ["ssi"])) - excluded_earner = is_child & ~person("is_parent", period) - excluded_earnings = where( - excluded_earner, add(person, period, p.earned_sources), 0 - ) - return countable + spm_unit.sum(adult_ssi - excluded_earnings) - - self.update_variable(ny_ccap_countable_income) +class ny_ccap_countable_income(Variable): + value_type = float + entity = SPMUnit + definition_period = YEAR + defined_for = StateCode.NY + + def formula(spm_unit, period, parameters): + p = parameters(period).gov.states.ny.ocfs.ccap.income.countable_income + countable = add(spm_unit, period, MAIN_INCOME_SOURCES) + person = spm_unit.members + is_child = person("is_child", period) + adult_ssi = where(is_child, 0, add(person, period, ["ssi"])) + excluded_earner = is_child & ~person("is_parent", period) + excluded_earnings = where( + excluded_earner, add(person, period, p.earned_sources), 0 + ) + return countable + spm_unit.sum(adult_ssi - excluded_earnings) @pytest.fixture(scope="module") @@ -71,7 +66,11 @@ def system(): @pytest.fixture(scope="module") def main_system(system): - return MainCountableIncome(system) + # The oracle changes one formula and never edits parameters. Keep its + # variable registry and entities private while sharing parameter values. + oracle = share_spm_policy(system) + oracle.update_variable(ny_ccap_countable_income) + return oracle @st.composite From 6483a99ef644715604046efad0b87413b897a448 Mon Sep 17 00:00:00 2001 From: Max Ghenis Date: Fri, 13 Nov 2026 19:39:30 -0500 Subject: [PATCH 07/11] Waive the New York CCAP share for Family Assistance families and date the child SSI exclusion New York waives the child care family share when a parent or caretaker relative receives public assistance (18 NYCRR 415.3(e)(1)). The waiver read reported enrollment only, so a family whose computed Family Assistance counted as income still paid a share. ny_ccap_family_assistance now holds the ny_tanf grant the family takes up, zero when TANF is abolished. Countable income counts it, and the waiver reads it beside reported enrollment. OCFS began excluding children's SSI and state supplements on October 1, 2023. Countable income now counts those payments in each month before that date and excludes them from it. The Safety Net Assistance input moves to the OTDA folder, and its 404.5(b)(5)(vi) entry follows (v) in the sources list. New York's coverage note now says when children's payments count. Two integration cases now enter earnings as employment_income_before_lsr, which TANF reads. With employment_income alone, the YAML runner left TANF with no earnings, and countable income counted the resulting grant. Co-Authored-By: Claude Opus 5.5 --- .../ny-ccap-public-assistance-income.added.md | 2 +- .../ny-ccap-public-assistance-income.fixed.md | 1 + .../child_ssi_exclusion_in_effect.yaml | 22 ++ .../ccap/income/countable_income/sources.yaml | 16 +- policyengine_us/programs.yaml | 2 +- ...cap_public_assistance_income_invariants.py | 64 +++++- .../gov/states/ny/ocfs/ccap/integration.yaml | 15 +- .../ccap/ny_ccap_family_share_exempt.yaml | 41 ++++ .../ny_ccap_public_assistance_income.yaml | 207 +++++++++++++++++- .../ny/ocfs/ccap/ny_ccap_countable_income.py | 54 ++--- .../ny/ocfs/ccap/ny_ccap_family_assistance.py | 28 +++ .../ocfs/ccap/ny_ccap_family_share_exempt.py | 22 +- .../ny_safety_net_assistance.py | 4 +- 13 files changed, 424 insertions(+), 54 deletions(-) create mode 100644 changelog.d/ny-ccap-public-assistance-income.fixed.md create mode 100644 policyengine_us/parameters/gov/states/ny/ocfs/ccap/income/countable_income/child_ssi_exclusion_in_effect.yaml create mode 100644 policyengine_us/variables/gov/states/ny/ocfs/ccap/ny_ccap_family_assistance.py rename policyengine_us/variables/gov/states/ny/{ocfs/ccap => otda/safety_net_assistance}/ny_safety_net_assistance.py (87%) diff --git a/changelog.d/ny-ccap-public-assistance-income.added.md b/changelog.d/ny-ccap-public-assistance-income.added.md index d463fa75a7c..c9f29a1101e 100644 --- a/changelog.d/ny-ccap-public-assistance-income.added.md +++ b/changelog.d/ny-ccap-public-assistance-income.added.md @@ -1 +1 @@ -Counted Family Assistance, Safety Net Assistance payments and adult state SSI supplements in New York child care assistance income. +Counted Family Assistance, Safety Net Assistance payments and adult state SSI supplements in New York child care assistance income, and waived the family share for families that take up Family Assistance. diff --git a/changelog.d/ny-ccap-public-assistance-income.fixed.md b/changelog.d/ny-ccap-public-assistance-income.fixed.md new file mode 100644 index 00000000000..bc958a1ad26 --- /dev/null +++ b/changelog.d/ny-ccap-public-assistance-income.fixed.md @@ -0,0 +1 @@ +Counted New York children's SSI and state supplements in child care assistance income before October 1, 2023, when OCFS began excluding them. diff --git a/policyengine_us/parameters/gov/states/ny/ocfs/ccap/income/countable_income/child_ssi_exclusion_in_effect.yaml b/policyengine_us/parameters/gov/states/ny/ocfs/ccap/income/countable_income/child_ssi_exclusion_in_effect.yaml new file mode 100644 index 00000000000..4fc8a6575fd --- /dev/null +++ b/policyengine_us/parameters/gov/states/ny/ocfs/ccap/income/countable_income/child_ssi_exclusion_in_effect.yaml @@ -0,0 +1,22 @@ +description: New York excludes the SSI and state supplemental payments of children in the child care services unit from Child Care Assistance Program income if this is true. +# Before October 1, 2023, OCFS counted SSI, including State supplemental +# payments, for every member of the unit under 404.5(b)(5)(vi). OCFS added +# the child exclusion from October 1, 2023 through emergency rule +# CFS-42-23-00002-EP and adopted it permanently on June 12, 2024. +values: + 2021-10-01: false + 2023-10-01: true + +metadata: + unit: bool + period: month + label: New York CCAP child SSI exclusion in effect + reference: + - title: 18 NYCRR 404.5(b)(5)(vi), OCFS compilation current as of November 24, 2021 + href: https://web.archive.org/web/20220529152858id_/https://ocfs.ny.gov/programs/childcare/regulations/404-Eligibility.pdf#page=10 + - title: NYS Register, October 18, 2023, CFS-42-23-00002-EP, effective October 1, 2023 + href: https://dos.ny.gov/system/files/documents/2023/10/101823.pdf#page=7 + - title: "18 NYCRR 404.5(b)(5)(vi) and (b)(6)(xxi), OCFS compilation current as of October 1, 2023 #page 10,12" + href: https://web.archive.org/web/20240522174247id_/https://ocfs.ny.gov/programs/childcare/regulations/404-Eligibility.pdf#page=10 + - title: NYS Register, June 12, 2024, CFS-42-23-00002-A, permanent adoption effective June 12, 2024 + href: https://dos.ny.gov/system/files/documents/2024/06/061224.pdf#page=7 diff --git a/policyengine_us/parameters/gov/states/ny/ocfs/ccap/income/countable_income/sources.yaml b/policyengine_us/parameters/gov/states/ny/ocfs/ccap/income/countable_income/sources.yaml index 7bac1abbb45..d5e1b8ed8d1 100644 --- a/policyengine_us/parameters/gov/states/ny/ocfs/ccap/income/countable_income/sources.yaml +++ b/policyengine_us/parameters/gov/states/ny/ocfs/ccap/income/countable_income/sources.yaml @@ -18,13 +18,13 @@ values: # 404.5(b)(5)(iv) also counts railroad retirement checks from the # U.S. government, which PolicyEngine records separately. - railroad_benefits - # 404.5(b)(5)(vi): public assistance, including home relief. - - ny_safety_net_assistance # 404.5(b)(5)(v): dividends, interest, income from estates or trusts, # net rental income and royalties. - dividend_income - interest_income - rental_income + # 404.5(b)(5)(vi): public assistance, including home relief. + - ny_safety_net_assistance # 404.5(b)(5)(vii): pensions and annuities. PolicyEngine records military # retirement separately from pension_income. - pension_income @@ -40,11 +40,13 @@ values: - veterans_benefits # # Counted separately in ny_ccap_countable_income: - # - ny_tanf, with TANF take-up and abolition controls. The New York - # grant avoids other states' dependent care deductions in the federal - # TANF aggregate, which reach CCAP through child care subsidies. - # - ssi and ny_ssp for adults under 404.5(b)(5)(vi). OCFS excludes both - # payments for children in the unit under 404.5(b)(6)(xxi). + # - ny_ccap_family_assistance, the ny_tanf grant the family takes up. + # The New York grant avoids other states' dependent care deductions in + # the federal TANF aggregate, which reach CCAP through child care + # subsidies. + # - ssi and ny_ssp under 404.5(b)(5)(vi). From October 1, 2023, OCFS + # excludes both payments for children in the unit under + # 404.5(b)(6)(xxi); see child_ssi_exclusion_in_effect. # # Excluded sources, so simply not listed: # - capital_gains, excluded by 404.5(b)(6)(viii), and proceeds from the diff --git a/policyengine_us/programs.yaml b/policyengine_us/programs.yaml index 293197dfa4f..775110f291d 100644 --- a/policyengine_us/programs.yaml +++ b/policyengine_us/programs.yaml @@ -875,7 +875,7 @@ programs: full_name: New York Child Care Assistance Program variable: ny_ccap parameter_prefix: gov.states.ny.ocfs.ccap - notes: Models New York income eligibility, market rates, and the family share, including Family Assistance, Safety Net Assistance payments and adult SSI state supplements in countable income, the foster-care and child-protective-services categorical routes, the 18 NYCRR 415.1(b) age extensions for special needs and court supervision, and the statutory family-share exceptions. The model prices excess periods for a sixth or seventh day of care, and for each day of care at or above the daily maximum hours, at the applicable daily or part-day rate under 24-OCFS-LCM-22. Without a county or county FIPS input, the model places a New York household in Albany County, in county group 2. That placement overstates rates for households in the 38 group 3 counties and understates them in New York City and the five group 1 counties. An UNKNOWN county falls to group 3, the lowest-rate group. The benefit requires childcare_hours_per_day and childcare_days_per_week as well as expenses, because OCFS sets market rates by duration of care; expenses alone yield no benefit. OCFS dropped hourly market rates on June 1, 2022 (22-OCFS-LCM-14); 18 NYCRR 415.9 and 24-OCFS-LCM-22 set weekly, daily and part-day rates only. Not modeled - the mandatory non-traditional-hours and homelessness payment differentials required by 18 NYCRR 415.9(f)(2)-(3) and the discretionary accreditation differential, the special-needs substituted market rate under 415.9(h)(4), safety net assistance as public assistance for the family-share exception, preventive services as distinct from protective services, the required-work-activity condition on the 415.2(a)(1) guarantee of care to public-assistance families (public assistance enrollment alone satisfies the reason-for-care test), and the child-only assistance unit exception to the family share + notes: Models New York income eligibility, market rates, and the family share, including Family Assistance, Safety Net Assistance payments and SSI state supplements in countable income (children's SSI and supplements only before October 1, 2023), the foster-care and child-protective-services categorical routes, the 18 NYCRR 415.1(b) age extensions for special needs and court supervision, and the statutory family-share exceptions. The model prices excess periods for a sixth or seventh day of care, and for each day of care at or above the daily maximum hours, at the applicable daily or part-day rate under 24-OCFS-LCM-22. Without a county or county FIPS input, the model places a New York household in Albany County, in county group 2. That placement overstates rates for households in the 38 group 3 counties and understates them in New York City and the five group 1 counties. An UNKNOWN county falls to group 3, the lowest-rate group. The benefit requires childcare_hours_per_day and childcare_days_per_week as well as expenses, because OCFS sets market rates by duration of care; expenses alone yield no benefit. OCFS dropped hourly market rates on June 1, 2022 (22-OCFS-LCM-14); 18 NYCRR 415.9 and 24-OCFS-LCM-22 set weekly, daily and part-day rates only. Not modeled - the mandatory non-traditional-hours and homelessness payment differentials required by 18 NYCRR 415.9(f)(2)-(3) and the discretionary accreditation differential, the special-needs substituted market rate under 415.9(h)(4), safety net assistance as public assistance for the family-share exception, preventive services as distinct from protective services, the required-work-activity condition on the 415.2(a)(1) guarantee of care to public-assistance families (public assistance enrollment alone satisfies the reason-for-care test), and the child-only assistance unit exception to the family share - state: OR status: complete name: Oregon ERDC diff --git a/policyengine_us/tests/core/test_ny_ccap_public_assistance_income_invariants.py b/policyengine_us/tests/core/test_ny_ccap_public_assistance_income_invariants.py index 8c023f01315..e5d00142ae8 100644 --- a/policyengine_us/tests/core/test_ny_ccap_public_assistance_income_invariants.py +++ b/policyengine_us/tests/core/test_ny_ccap_public_assistance_income_invariants.py @@ -229,6 +229,39 @@ def test_a_childs_state_supplement_does_not_change_income_or_ccap(system, year, ) +# OCFS began excluding children's SSI and state supplements on October 1, +# 2023, so the months that count a child's payments are 12, 9 and 0. +CHILD_PAYMENT_MONTHS = {2022: 12, 2023: 9, 2024: 0} + + +@PROPERTY_SETTINGS +@given( + st.sampled_from(sorted(CHILD_PAYMENT_MONTHS)), + st.lists(families(), min_size=2, max_size=6), +) +def test_a_childs_ssi_and_supplement_count_only_before_october_2023( + system, year, units +): + cases = [] + monthly_payments = [] + for family in units: + minor_family = {**family, "child_age": min(family["child_age"], 17)} + supplement = family["low"] + family["increase"] + cases.append(({**minor_family, "child_ssi": 0}, {"family_assistance": 0})) + cases.append((minor_family, {"family_assistance": 0, "child_ssp": supplement})) + monthly_payments.append(minor_family["child_ssi"] + supplement) + simulation = Simulation( + tax_benefit_system=system, situation=_situation(cases, year) + ) + income = np.asarray(simulation.calculate("ny_ccap_countable_income", year)) + np.testing.assert_allclose( + income[1::2] - income[0::2], + CHILD_PAYMENT_MONTHS[year] * np.array(monthly_payments), + atol=TOLERANCE, + rtol=0, + ) + + @PROPERTY_SETTINGS @given(st.sampled_from(YEARS), st.lists(families(), min_size=2, max_size=6)) def test_reported_public_assistance_keeps_the_family_share_zero(system, year, units): @@ -248,13 +281,38 @@ def test_reported_public_assistance_keeps_the_family_share_zero(system, year, un assert (outputs["ny_ccap"] >= 0).all() +@PROPERTY_SETTINGS +@given(st.sampled_from(YEARS), st.lists(families(), min_size=2, max_size=6)) +def test_counted_family_assistance_keeps_the_family_share_zero(system, year, units): + # Families report no enrollment, so only the grant they take up can + # waive the share under 415.3(e)(1). + cases = [ + ( + {**family, "enrolled": False}, + {"family_assistance": family["low"] + family["increase"]}, + ) + for family in units + ] + simulation = Simulation( + tax_benefit_system=system, situation=_situation(cases, year) + ) + month = f"{year}-10" + counted = np.asarray(simulation.calculate("ny_ccap_family_assistance", month)) + share = np.asarray(simulation.calculate("ny_ccap_family_share", month)) + takes_up = np.array([family["takeup"] for family, _ in cases]) + grants = np.array([amounts["family_assistance"] for _, amounts in cases]) + np.testing.assert_allclose( + counted, np.where(takes_up, grants, 0), atol=TOLERANCE, rtol=0 + ) + np.testing.assert_array_equal(share[counted > 0], 0) + assert (simulation.calculate("ny_ccap", month) >= 0).all() + + @PROPERTY_SETTINGS @given(st.sampled_from(YEARS), st.lists(families(), min_size=2, max_size=6)) def test_safety_net_receipt_alone_keeps_the_family_share_zero(system, year, units): if "ny_safety_net_assistance_received" not in system.variables: - pytest.skip( - "Safety Net receipt and its waiver require the categorical routes build." - ) + pytest.skip("The model has no Safety Net Assistance receipt input yet.") cases = [ ( {**family, "enrolled": False, "takeup": False}, diff --git a/policyengine_us/tests/policy/baseline/gov/states/ny/ocfs/ccap/integration.yaml b/policyengine_us/tests/policy/baseline/gov/states/ny/ocfs/ccap/integration.yaml index 7667e070c45..b9ee320e7e3 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/ny/ocfs/ccap/integration.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/ny/ocfs/ccap/integration.yaml @@ -12,6 +12,9 @@ members: [person1] meets_ccdf_activity_test: true ny_ccap_countable_income: 60_000 + # The family does not take up Family Assistance in any month, so + # the grant's family share waiver does not apply. + takes_up_tanf_if_eligible: false spm_unit_fpg: 25_750 # 85% of SMI is the limit from 2023-10-01; $68,000 > $60,000 income. hhs_smi: 80_000 @@ -84,6 +87,9 @@ members: [person1] meets_ccdf_activity_test: true ny_ccap_countable_income: 25_751 + # The family does not take up Family Assistance in any month, so + # the grant's family share waiver does not apply. + takes_up_tanf_if_eligible: false spm_unit_fpg: 25_750 spm_unit_pre_subsidy_childcare_expenses: 12_000 households: @@ -151,7 +157,8 @@ people: person1: age: 30 - employment_income: 40_000 + # TANF reads earnings before labor supply responses. + employment_income_before_lsr: 40_000 person2: age: 1 childcare_provider_type_group: DCC_SACC @@ -168,6 +175,9 @@ county_str: NASSAU_COUNTY_NY state_code: NY output: + # $40,000 of earnings exceeds New York's Family Assistance need standard + # for two, so the family receives no grant. + ny_ccap_family_assistance: 0 ny_ccap_countable_income: 40_000 / 12 spm_unit_fpg: 21_150 / 12 # New York's $127,802 state median income for a family of four, adjusted @@ -191,7 +201,8 @@ people: person1: age: 30 - employment_income: 40_000 + # TANF reads earnings before labor supply responses. + employment_income_before_lsr: 40_000 person2: age: 1 childcare_provider_type_group: DCC_SACC diff --git a/policyengine_us/tests/policy/baseline/gov/states/ny/ocfs/ccap/ny_ccap_family_share_exempt.yaml b/policyengine_us/tests/policy/baseline/gov/states/ny/ocfs/ccap/ny_ccap_family_share_exempt.yaml index 4901d8f47dd..26a77cf7650 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/ny/ocfs/ccap/ny_ccap_family_share_exempt.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/ny/ocfs/ccap/ny_ccap_family_share_exempt.yaml @@ -2,6 +2,8 @@ # experiencing homelessness, families at or below 100% of the state income # standard, children in foster care, children receiving child care as a # protective or preventive service, and child-only units. +# A lone child with no income computes a Family Assistance grant, so cases +# without public assistance set ny_tanf to zero. - name: Case 1, a family with none of the exceptions is not exempt. period: 2025-01 @@ -12,6 +14,7 @@ spm_units: spm_unit: members: [child] + ny_tanf: 0 households: household: members: [child] @@ -121,6 +124,7 @@ members: [child] ny_ccap_countable_income: 60_000 spm_unit_fpg: 25_000 + ny_tanf: 0 households: household: members: [child] @@ -129,3 +133,40 @@ ny_ccap_family_share_exempt: false ny_ccap_family_share: (60_000 - 25_000) * 0.01 / 12 absolute_error_margin: 0.01 + +- name: Case 8, a family that takes up a Family Assistance grant is exempt. + period: 2025-01 + input: + people: + child: + age: 3 + spm_units: + spm_unit: + members: [child] + ny_tanf: 200 + households: + household: + members: [child] + state_code: NY + output: + ny_ccap_family_assistance: 200 + ny_ccap_family_share_exempt: true + +- name: Case 9, a family that declines the grant is not exempt. + period: 2025-01 + input: + people: + child: + age: 3 + spm_units: + spm_unit: + members: [child] + ny_tanf: 200 + takes_up_tanf_if_eligible: false + households: + household: + members: [child] + state_code: NY + output: + ny_ccap_family_assistance: 0 + ny_ccap_family_share_exempt: false diff --git a/policyengine_us/tests/policy/baseline/gov/states/ny/ocfs/ccap/ny_ccap_public_assistance_income.yaml b/policyengine_us/tests/policy/baseline/gov/states/ny/ocfs/ccap/ny_ccap_public_assistance_income.yaml index cb2af4ae815..110e09e0c25 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/ny/ocfs/ccap/ny_ccap_public_assistance_income.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/ny/ocfs/ccap/ny_ccap_public_assistance_income.yaml @@ -200,10 +200,215 @@ ny_ccap_countable_income: 2025-01: 291.50 2025: 3_498 - # Public assistance enrollment waives the family share. + # $3,498 falls below the 2025 state income standard for two, + # $15,650 + $5,500 = $21,150, so no income-based share applies. ny_ccap_family_share: 0 # min($24,000 / 12 expenses, $1,000 rate) - $0 share = $1,000/month. ny_ccap: 1_000 # $24,000 expenses - 12 * $1,000 CCAP = $12,000/year after subsidy. childcare_expenses: 2025: 12_000 + +# New York waives the family share under 415.3(e)(1) when a parent or +# caretaker relative receives public assistance. Income exceeds the state +# income standard in the next two cases, so the waiver decides the share. +- name: Reported Family Assistance waives a share above the state income standard. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + parent: + age: 30 + immigration_status: CITIZEN + employment_income_before_lsr: 12_000 + pre_subsidy_rent: 12_000 + ssi: {2026: 0} + ny_ssp: {2026: 0} + child: + age: 4 + immigration_status: CITIZEN + childcare_hours_per_day: 8 + childcare_days_per_week: 5 + ny_ccap_market_rate: {2026: 12_000} + ssi: {2026: 0} + ny_ssp: {2026: 0} + grandparent: + age: 70 + immigration_status: CITIZEN + ssi: {2026: 11_928} + ny_ssp: {2026: 0} + spm_units: + unit: + members: [parent, child, grandparent] + is_tanf_enrolled: {2026: true} + takes_up_tanf_if_eligible: true + meets_ccdf_activity_test: true + spm_unit_cash_assets: 0 + spm_unit_pre_subsidy_childcare_expenses: 24_000 + households: + household: + members: [parent, child, grandparent] + state_code: NY + county_str: NEW_YORK_COUNTY_NY + output: + # Need for three: $336 + $30 + $23 + min($1,000 rent, $400) = $789. + # Countable earnings: $1,000 * (1 - 0.64) - $150 = $210. + # Grant: $789 - $210 = $579/month, $6,948/year. SSI is not TANF income. + ny_tanf: + 2026-01: 579 + 2026: 6_948 + # $12,000 earnings + $6,948 grant + $11,928 SSI = $30,876. + ny_ccap_countable_income: + 2026: 30_876 + # The 2026 standard for three, $15,960 + 2 * $5,680 = $27,320, falls + # short of $30,876, so only the waiver keeps the share at zero. + ny_ccap_family_share: 0 + # min($24,000 / 12 expenses, $1,000 rate) - $0 share = $1,000/month. + ny_ccap: 1_000 + +- name: A computed Family Assistance grant waives the share without reported enrollment. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + parent: + age: 30 + immigration_status: CITIZEN + employment_income_before_lsr: 12_000 + pre_subsidy_rent: 12_000 + ssi: {2026: 0} + ny_ssp: {2026: 0} + child: + age: 4 + immigration_status: CITIZEN + childcare_hours_per_day: 8 + childcare_days_per_week: 5 + ny_ccap_market_rate: {2026: 12_000} + ssi: {2026: 0} + ny_ssp: {2026: 0} + grandparent: + age: 70 + immigration_status: CITIZEN + ssi: {2026: 11_928} + ny_ssp: {2026: 0} + spm_units: + unit: + members: [parent, child, grandparent] + is_tanf_enrolled: {2026: false} + takes_up_tanf_if_eligible: true + meets_ccdf_activity_test: true + spm_unit_cash_assets: 0 + spm_unit_pre_subsidy_childcare_expenses: 24_000 + households: + household: + members: [parent, child, grandparent] + state_code: NY + county_str: NEW_YORK_COUNTY_NY + output: + # The same $579/month grant and $30,876 of income as the case above. + ny_ccap_family_assistance: 579 + ny_ccap_countable_income: + 2026: 30_876 + # Without the waiver the share would be max(($30,876 - $27,320) / 12 + # * 1%, $1 * 52 / 12) = $4.33/month. The grant the family takes up + # waives it. + ny_ccap_family_share_exempt: true + ny_ccap_family_share: 0 + ny_ccap: 1_000 + +- name: A declined Family Assistance grant neither counts as income nor waives the share. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + parent: + age: 30 + immigration_status: CITIZEN + employment_income_before_lsr: 30_000 + pre_subsidy_rent: 12_000 + ssi: {2026: 0} + ny_ssp: {2026: 0} + child: + age: 4 + immigration_status: CITIZEN + childcare_hours_per_day: 8 + childcare_days_per_week: 5 + ny_ccap_market_rate: {2026: 12_000} + ssi: {2026: 0} + ny_ssp: {2026: 0} + spm_units: + unit: + members: [parent, child] + ny_tanf: {2026: 2_400} + is_tanf_enrolled: {2026: false} + takes_up_tanf_if_eligible: false + meets_ccdf_activity_test: true + spm_unit_cash_assets: 0 + spm_unit_pre_subsidy_childcare_expenses: 24_000 + households: + household: + members: [parent, child] + state_code: NY + county_str: NEW_YORK_COUNTY_NY + output: + ny_ccap_family_assistance: 0 + # $30,000 earnings; the declined $2,400 grant is not counted. + ny_ccap_countable_income: + 2026: 30_000 + ny_ccap_family_share_exempt: false + # The 2026 standard for two is $15,960 + $5,680 = $21,640. + # ($30,000 - $21,640) / 12 * 1% = $6.97 exceeds $1 * 52 / 12 = $4.33. + ny_ccap_family_share: 6.97 + # $1,000 - $6.97 = $993.03/month. + ny_ccap: 993.03 + +# OCFS added the child SSI exclusion on October 1, 2023. Before then, OCFS +# counted a child's SSI and state supplement under 404.5(b)(5)(vi). +- name: New York counts a child's SSI and state supplement in 2022. + period: 2022 + input: + people: + parent: + age: 30 + employment_income: 10_000 + ny_ssp: 0 + child: + age: 5 + ssi: 4_800 + ny_ssp: 1_200 + spm_units: + unit: + members: [parent, child] + ny_tanf: 0 + households: + household: + members: [parent, child] + state_code: NY + output: + # $10,000 earnings + $4,800 child SSI + $1,200 child supplement = $16,000. + ny_ccap_countable_income: 16_000 + +- name: New York counts a child's 2023 SSI and supplement through September only. + period: 2023 + input: + people: + parent: + age: 30 + employment_income: 10_000 + ny_ssp: 0 + child: + age: 5 + ssi: 4_800 + ny_ssp: 1_200 + spm_units: + unit: + members: [parent, child] + ny_tanf: 0 + households: + household: + members: [parent, child] + state_code: NY + output: + # $400 SSI + $100 supplement per month, counted January to September: + # $10,000 + 9 * $500 = $14,500. + ny_ccap_countable_income: 14_500 diff --git a/policyengine_us/variables/gov/states/ny/ocfs/ccap/ny_ccap_countable_income.py b/policyengine_us/variables/gov/states/ny/ocfs/ccap/ny_ccap_countable_income.py index 1a39eb34aaa..a772199e365 100644 --- a/policyengine_us/variables/gov/states/ny/ocfs/ccap/ny_ccap_countable_income.py +++ b/policyengine_us/variables/gov/states/ny/ocfs/ccap/ny_ccap_countable_income.py @@ -10,46 +10,42 @@ class ny_ccap_countable_income(Variable): defined_for = StateCode.NY documentation = ( "New York counts income for Child Care Assistance Program eligibility " - "and the family share under 18 NYCRR 404.5(b)(5). Count Family " - "Assistance through ny_tanf, with TANF take-up and abolition controls, " - "to avoid other states' dependent care deductions in the federal " - "TANF aggregate. Count reported Safety Net Assistance amounts and " - "adults' SSI and state supplements under 404.5(b)(5)(vi). OCFS " + "and the family share under 18 NYCRR 404.5(b)(5). Count the Family " + "Assistance the family takes up through ny_ccap_family_assistance. " + "Count reported Safety Net Assistance amounts and SSI and state " + "supplements under 404.5(b)(5)(vi). From October 1, 2023, OCFS " "excludes children's SSI and state supplements under " - "404.5(b)(6)(xxi), which OCFS retained when adopting the rule " - "permanently on June 12, 2024. OCFS uses the child care services unit under " - "415.1(l). It separates cohabiting adults without a common child " - "and treats an 18-year-old as an adult outside the parent's unit. " - "When children live with no parent, OCFS counts only the children " - "in their unit. PolicyEngine uses the SPM unit, which combines " - "those cases. Monthly consumers read this annual income with the " - "bare period and Core divides it." + "404.5(b)(5)(vi) and (b)(6)(xxi); before then, OCFS counted them " + "for every member under (b)(5)(vi). OCFS uses the child care " + "services unit under 415.1(l). It separates cohabiting adults " + "without a common child and treats an 18-year-old as an adult " + "outside the parent's unit. When children live with no parent, " + "OCFS counts only the children in their unit. PolicyEngine uses " + "the SPM unit, which combines those cases. Monthly consumers read " + "this annual income with the bare period and Core divides it." ) reference = ( - "https://www.law.cornell.edu/regulations/new-york/18-NYCRR-404.5", "https://ocfs.ny.gov/programs/childcare/regulations/404-Eligibility.pdf#page=10", + "https://web.archive.org/web/20220529152858id_/https://ocfs.ny.gov/programs/childcare/regulations/404-Eligibility.pdf#page=10", "https://ocfs.ny.gov/main/policies/external/2023/adm/23-OCFS-ADM-18.pdf#page=4", - "https://dos.ny.gov/system/files/documents/2024/02/022824.pdf#page=8", + "https://dos.ny.gov/system/files/documents/2023/10/101823.pdf#page=7", "https://dos.ny.gov/system/files/documents/2024/06/061224.pdf#page=7", ) def formula(spm_unit, period, parameters): p = parameters(period).gov.states.ny.ocfs.ccap.income.countable_income countable = add(spm_unit, period, p.sources) - # The federal TANF aggregate reads other states' dependent care - # deductions, which reach CCAP through child care subsidies. - # New York's own grant avoids that path. Preserve TANF's controls. - family_assistance = add(spm_unit, period, ["ny_tanf"]) * spm_unit( - "takes_up_tanf_if_eligible", period - ) - family_assistance = where( - parameters(period).gov.hhs.tanf.abolish_tanf, 0, family_assistance - ) + family_assistance = add(spm_unit, period, ["ny_ccap_family_assistance"]) person = spm_unit.members is_child = person("is_child", period) - # Both payments are monthly, so add() sums them across the year. - # OCFS's 404.5(b)(6)(xxi) excludes children's SSI and supplements. - adult_ssi = where(is_child, 0, add(person, period, ["ssi", "ny_ssp"])) + # SSI and ny_ssp are monthly. OCFS began excluding children's + # payments on October 1, 2023, so apply the exclusion month by month. + ssi = 0 + for month in period.get_subperiods(MONTH): + p_month = parameters(month).gov.states.ny.ocfs.ccap.income + child_excluded = p_month.countable_income.child_ssi_exclusion_in_effect + payments = add(person, month, ["ssi", "ny_ssp"]) + ssi = ssi + where(is_child & child_excluded, 0, payments) # 404.5(b)(6)(xiii) excludes the earnings of a dependent child under # 18 who is not legally responsible for the child needing care, and # directs that no inquiry be made into them. is_child is age under 18. @@ -57,6 +53,4 @@ def formula(spm_unit, period, parameters): excluded_earnings = where( excluded_earner, add(person, period, p.earned_sources), 0 ) - return ( - countable + family_assistance + spm_unit.sum(adult_ssi - excluded_earnings) - ) + return countable + family_assistance + spm_unit.sum(ssi - excluded_earnings) diff --git a/policyengine_us/variables/gov/states/ny/ocfs/ccap/ny_ccap_family_assistance.py b/policyengine_us/variables/gov/states/ny/ocfs/ccap/ny_ccap_family_assistance.py new file mode 100644 index 00000000000..85290e77d69 --- /dev/null +++ b/policyengine_us/variables/gov/states/ny/ocfs/ccap/ny_ccap_family_assistance.py @@ -0,0 +1,28 @@ +from policyengine_us.model_api import * + + +class ny_ccap_family_assistance(Variable): + value_type = float + entity = SPMUnit + label = "New York Family Assistance counted for CCAP" + unit = USD + definition_period = MONTH + defined_for = StateCode.NY + documentation = ( + "New York's Family Assistance grant (ny_tanf) that the family " + "takes up. New York counts it as income under 18 NYCRR " + "404.5(b)(5)(vi), and a family receiving it pays no family share " + "under 415.3(e)(1). PolicyEngine reads New York's own grant " + "because the federal TANF aggregate sums other states' programs, " + "whose dependent care deductions read child care subsidies." + ) + reference = ( + "https://ocfs.ny.gov/programs/childcare/regulations/404-Eligibility.pdf#page=10", + "https://web.archive.org/web/20240522174244id_/https://ocfs.ny.gov/programs/childcare/regulations/415-Child-Care-Services.pdf#page=18", + ) + + def formula(spm_unit, period, parameters): + if parameters(period).gov.hhs.tanf.abolish_tanf: + return 0 + takes_up = spm_unit("takes_up_tanf_if_eligible", period.this_year) + return spm_unit("ny_tanf", period) * takes_up diff --git a/policyengine_us/variables/gov/states/ny/ocfs/ccap/ny_ccap_family_share_exempt.py b/policyengine_us/variables/gov/states/ny/ocfs/ccap/ny_ccap_family_share_exempt.py index 110cdc3bb7a..d034d840a6e 100644 --- a/policyengine_us/variables/gov/states/ny/ocfs/ccap/ny_ccap_family_share_exempt.py +++ b/policyengine_us/variables/gov/states/ny/ocfs/ccap/ny_ccap_family_share_exempt.py @@ -11,10 +11,13 @@ class ny_ccap_family_share_exempt(Variable): "Categorical exceptions to the New York Child Care Assistance " "Program family share under 18 NYCRR 415.3(e)(1). Three of the " "exceptions are narrower here than in the regulation. New York " - "counts both family assistance and safety net assistance as public " - "assistance, but PolicyEngine has no safety net assistance variable, " - "so only family assistance enrollment is read. The regulation covers " - "a child receiving preventive as well as protective services, and " + "counts both Family Assistance and Safety Net Assistance as public " + "assistance. PolicyEngine reads reported Family Assistance " + "enrollment and the Family Assistance grant the family takes up, " + "which ny_ccap_countable_income also counts. It does not read the " + "Safety Net Assistance amount, which can include payments to unit " + "members other than a parent or caretaker relative. The regulation " + "covers a child receiving preventive as well as protective services, and " "PolicyEngine has no preventive services variable. The exception for " "a child care services unit comprised of the eligible children only " "is not modeled because PolicyEngine has no variable identifying a " @@ -25,14 +28,17 @@ class ny_ccap_family_share_exempt(Variable): ) reference = ( "https://ocfs.ny.gov/programs/childcare/regulations/415-Child-Care-Services.pdf#page=19", + "https://web.archive.org/web/20240522174244id_/https://ocfs.ny.gov/programs/childcare/regulations/415-Child-Care-Services.pdf#page=18", "https://ocfs.ny.gov/main/policies/external/2023/adm/23-OCFS-ADM-18.pdf#page=3", ) def formula(spm_unit, period, parameters): - # is_tanf_enrolled reflects reported enrollment rather than the - # computed tanf amount, so reading it does not close the - # CCAP -> TANF -> child care expenses circular dependency. - public_assistance = spm_unit("is_tanf_enrolled", period) + # Read New York's own grant rather than the federal tanf aggregate, + # which reaches child care expenses through other states' dependent + # care deductions and would close a CCAP -> TANF -> CCAP cycle. + public_assistance = spm_unit("is_tanf_enrolled", period) | ( + spm_unit("ny_ccap_family_assistance", period) > 0 + ) homeless = spm_unit.household("is_homeless", period.this_year) foster_care = add(spm_unit, period, ["is_in_foster_care"]) > 0 protective_services = spm_unit( diff --git a/policyengine_us/variables/gov/states/ny/ocfs/ccap/ny_safety_net_assistance.py b/policyengine_us/variables/gov/states/ny/otda/safety_net_assistance/ny_safety_net_assistance.py similarity index 87% rename from policyengine_us/variables/gov/states/ny/ocfs/ccap/ny_safety_net_assistance.py rename to policyengine_us/variables/gov/states/ny/otda/safety_net_assistance/ny_safety_net_assistance.py index 9e884e78e32..4310d614bea 100644 --- a/policyengine_us/variables/gov/states/ny/ocfs/ccap/ny_safety_net_assistance.py +++ b/policyengine_us/variables/gov/states/ny/otda/safety_net_assistance/ny_safety_net_assistance.py @@ -18,4 +18,6 @@ class ny_safety_net_assistance(Variable): "Record a parent's or caretaker relative's receipt separately with " "ny_safety_net_assistance_received for CCAP categorical routes." ) - reference = "https://www.law.cornell.edu/regulations/new-york/18-NYCRR-404.5" + reference = ( + "https://ocfs.ny.gov/programs/childcare/regulations/404-Eligibility.pdf#page=10" + ) From 88b1c00a7911002cbdae4ab68e63f340fb723653 Mon Sep 17 00:00:00 2001 From: Max Ghenis Date: Fri, 13 Nov 2026 19:39:30 -0500 Subject: [PATCH 08/11] Date the New York child SSI exclusion candidate from October 2023 LII still reproduces the 404.5 text in force before October 1, 2023, which matches OCFS's November 2021 compilation. The candidate now starts in 2023, says so and cites that compilation. Its state moves from ruled to unreviewed, since no ruling covers it. Each capture holds whole pages of the source text in the format the other captures use. Co-Authored-By: Claude Opus 5.5 --- source_conflicts/candidates.yaml | 45 ++-- .../us-ny/dos-ccap-adoption-2024-06-12.txt | 118 +++++++- .../us-ny/dos-ccap-child-ssi-2024-02-28.txt | 254 +++++++++++++++++- .../us-ny/dos-ccap-emergency-2023-10-18.txt | 112 +++++++- .../us-ny/lii-404-5-2026-exclusions-end.txt | 7 - .../sources/us-ny/lii-404-5-2026.txt | 70 +++++ .../us-ny/ocfs-404-eligibility-2021.txt | 136 ++++++++++ .../ocfs-404-eligibility-2023-child-ssi.txt | 143 +++++++++- 8 files changed, 841 insertions(+), 44 deletions(-) delete mode 100644 source_conflicts/sources/us-ny/lii-404-5-2026-exclusions-end.txt create mode 100644 source_conflicts/sources/us-ny/lii-404-5-2026.txt create mode 100644 source_conflicts/sources/us-ny/ocfs-404-eligibility-2021.txt diff --git a/source_conflicts/candidates.yaml b/source_conflicts/candidates.yaml index 635a7362028..c1804f86acc 100644 --- a/source_conflicts/candidates.yaml +++ b/source_conflicts/candidates.yaml @@ -14338,44 +14338,49 @@ candidates: - id: us-ny:ccap-child-ssi-state-supplement-exclusion program: child-care-assistance years: - from: 2021 + from: 2023 type: calendar - question: Does New York exclude children's SSI and state supplements from child care assistance income under - OCFS's regulatory compilation when LII omits the child exclusion? + question: Does New York exclude children's SSI and state supplements from child care assistance income from October + 1, 2023, while LII still reproduces the earlier text without the child exclusion? sources: - kind: regulation citation: OCFS compilation of 18 NYCRR 404.5(b)(5)(vi) and (b)(6)(xxi), current October 1, 2023, pages 10-12 - url: https://ocfs.ny.gov/programs/childcare/regulations/404-Eligibility.pdf#page=12 + url: https://web.archive.org/web/20240522174247id_/https://ocfs.ny.gov/programs/childcare/regulations/404-Eligibility.pdf#page=10 + - kind: regulation + citation: OCFS compilation of 18 NYCRR 404.5(b)(5)(vi) and (b)(6), current November 24, 2021, pages 10-12 + url: https://web.archive.org/web/20220529152858id_/https://ocfs.ny.gov/programs/childcare/regulations/404-Eligibility.pdf#page=10 - kind: regulation - citation: LII reproduction of 18 NYCRR 404.5(b)(5)(vi) and (b)(6), retrieved November 12, 2026 + citation: LII reproduction of 18 NYCRR 404.5, retrieved November 13, 2026 url: https://www.law.cornell.edu/regulations/new-york/18-NYCRR-404.5 - kind: rulemaking citation: New York State Register, October 18, 2023, CFS-42-23-00002-EP, printed page 1 url: https://dos.ny.gov/system/files/documents/2023/10/101823.pdf#page=7 - kind: rulemaking citation: New York State Register, February 28, 2024, CFS-42-23-00002-ERP, printed pages 1-2 - url: https://dos.ny.gov/system/files/documents/2024/02/022824.pdf#page=8 + url: https://dos.ny.gov/system/files/documents/2024/02/022824.pdf#page=7 - kind: rulemaking citation: New York State Register, June 12, 2024, CFS-42-23-00002-A, printed page 1 url: https://dos.ny.gov/system/files/documents/2024/06/061224.pdf#page=7 readings: - statute: No statute supplied; OCFS excludes children's SSI, including state supplemental payments, from child - care assistance income under both the income-source provision and the exclusions provision. - other: LII includes SSI and state supplemental payments among public assistance income sources, omits the child - exception, and ends the exclusions at paragraph (xx). + statute: No statute supplied; from October 1, 2023, OCFS excludes children's SSI, including state supplemental + payments, from child care assistance income under 404.5(b)(5)(vi) and (b)(6)(xxi). + other: LII still reproduces the text in force before October 1, 2023, which matches OCFS's November 24, 2021 + compilation. Under that text, OCFS counts SSI and State supplemental payments for every member, and the exclusions + end at paragraph (xx). pe_us: follows: gap-fill code: - policyengine_us/variables/gov/states/ny/ocfs/ccap/ny_ccap_countable_income.py - - policyengine_us/parameters/gov/states/ny/ocfs/ccap/income/countable_income/sources.yaml + - policyengine_us/parameters/gov/states/ny/ocfs/ccap/income/countable_income/child_ssi_exclusion_in_effect.yaml prs: - https://github.com/PolicyEngine/policyengine-us/pull/10827 - state: ruled - note: PolicyEngine follows OCFS's regulatory compilation and excludes children's SSI and state supplements while - counting adults' benefits. OCFS put the emergency amendment into effect on October 1, 2023 and retained the - child exclusion in the February 2024 revised rule. OCFS adopted that rule permanently, without further changes, - effective June 12, 2024. The captures under source_conflicts/sources/us-ny/ preserve the OCFS provision, LII's - end-of-exclusions text and the three rulemaking notices. The OCFS compilation capture records archive snapshot - 20240522174247; the Department of State serves the rulemaking notices directly. The years begin with the model's - first countable-income source parameter on October 1, 2021. We have not verified the exclusion before October - 2023 or the current consolidated 2026 text. Westlaw returned HTTP 403 when we requested its regulatory text. + state: unreviewed + note: OCFS put the child exclusion into effect on October 1, 2023 through emergency rule CFS-42-23-00002-EP, whose + notice says OCFS "further proposes to exclude Supplemental Security Income, including state supplemental payments, + received by any child(ren)". Before then, OCFS counted children's SSI and supplements under 404.5(b)(5)(vi). OCFS + retained the exclusion in the February 2024 revised rule and adopted it permanently, without further changes, + effective June 12, 2024. LII's notes list the 2024 emergency amendments, but its text omits them. PolicyEngine + counts children's payments before October 1, 2023 and excludes them from that date. The captures under + source_conflicts/sources/us-ny/ preserve both OCFS compilations, LII's text and the three rulemaking notices. We + could not reach OCFS's live copy in November 2026, so the current text rests on the archived October 2023 + compilation and the June 2024 adoption notice. diff --git a/source_conflicts/sources/us-ny/dos-ccap-adoption-2024-06-12.txt b/source_conflicts/sources/us-ny/dos-ccap-adoption-2024-06-12.txt index 4455b3dfa60..f7eba4aa839 100644 --- a/source_conflicts/sources/us-ny/dos-ccap-adoption-2024-06-12.txt +++ b/source_conflicts/sources/us-ny/dos-ccap-adoption-2024-06-12.txt @@ -1,7 +1,117 @@ Source: https://dos.ny.gov/system/files/documents/2024/06/061224.pdf#page=7 -Retrieved November 12, 2026 from the New York Department of State. -Physical PDF page 7, printed page 1. OCFS filed permanent adoption CFS-42-23-00002-A on May 23, 2024, effective June 12, 2024. -Extracted the final-rule comparison and its link to the previously published revised rule; joined wrapped lines. +Page 7, text extracted with pdftotext (poppler), reading order. +RULE MAKING +ACTIVITIES + +Each rule making is identified by an I.D. No., which consists +of 13 characters. For example, the I.D. No. AAM-01-9600001-E indicates the following: +AAM +-the abbreviation to identify the adopting agency +01 +-the State Register issue number +96 +-the year +00001 +-the Department of State number, assigned upon +receipt of notice. +E +-Emergency Rule Making—permanent action +not intended (This character could also be: A +for Adoption; P for Proposed Rule Making; RP +for Revised Rule Making; EP for a combined +Emergency and Proposed Rule Making; EA for +an Emergency Rule Making that is permanent +and does not expire 90 days after filing.) +Italics contained in text denote new material. Brackets +indicate material to be deleted. + +Office of Children and Family +Services +NOTICE OF ADOPTION +Expansion of Eligibility for Child Care Assistance Program +I.D. No. CFS-42-23-00002-A +Filing No. 487 +Filing Date: 2024-05-23 +Effective Date: 2024-06-12 +PURSUANT TO THE PROVISIONS OF THE State Administrative Procedure Act, NOTICE is hereby given of the following action: +Action taken: Amendment of Parts 404 and 415 of Title 18 NYCRR. +Statutory authority: Social Services Law, sections 20, 34, 410, 410-u, +410-w and 410-x; L. 2023, ch. 56 +Subject: Expansion of eligibility for child care assistance program. +Purpose: To implement changes to the child care assistance program set +forth in chapter 56 of the Laws of 2023. +Text or summary was published in the October 18, 2023 issue of the Register, I.D. No. CFS-42-23-00002-EP. Final rule as compared with last published rule: No changes. -Revised rule making(s) were previously published in the State Register on February 28, 2024. +Revised rule making(s) were previously published in the State Register +on February 28, 2024. +Text of rule and any required statements and analyses may be obtained +from: Nicholas Steinbock-Pratt, Office of Children and Family Services, +52 Washington Street, Rensselaer, New York 12144, (518) 473-3226, +email: regcomments@ocfs.ny.gov +Initial Review of Rule +As a rule that requires a RFA, RAFA or JIS, this rule will be initially +reviewed in the calendar year 2027, which is no later than the 3rd year after the year in which this rule is being adopted. + +Revised Regulatory Impact Statement +1) Statutory Authority: +Chapter 56 of the laws of New York State of 2023 authorizes the New +York State Office of Children and Family Services (OCFS) to promulgate +rules and regulations, on an emergency basis, to implement the applicable +statutory provisions. +Section 20(3)(d) of the Social Services Law (SSL) authorizes OCFS to +establish rules, regulations, and policies to carry out OCFS’s powers and +duties under the SSL. +Section 34(3)(f) of the SSL authorizes OCFS to establish regulations +for the administration of public assistance and care within the state. +Section 410(1) of the SSL authorizes a social services official of a +county, city, or town to provide day care for children at public expense and +authorizes OCFS to establish criteria for when such day care is to be +provided. +Section 410-u of the SSL establishes the New York State Child Care +Block Grant Program (NYSCCBGP). +Section 410-w of the SSL delineates which families may be eligible to +receive child care assistance funded by the NYSCCBGP. +Section 410-u(2) and 410-w(1) and (3) of the SSL set the income +eligibility threshold for the NYSCCBGP at 85% state median income. +Section 410-w(3-a) of the SSL allows social services districts to utilize +a presumptive eligibility standard to provide child care assistance during +the eligibility determination period under the NYSCCBGP and authorizes +OCFS to issue guidance regarding the presumptive eligibility criteria to be +used by districts. +Section 410-w(8) and 410-x(6) of the SSL prohibit social services +districts from requiring families to contribute more than 1% of their +income exceeding the federal poverty level as a family share under the +NYSCCBGP. +Section 410-x(2) of the SSL allows OCFS to establish priorities for +families that will be eligible to receive funding under the NYSCCBGP. +Section 410-x(9) of the SSL requires reimbursement for payment on +behalf of children who are temporarily absent from child care for up to 80 +days per year under the NYSCCBGP. +Section 410-x(8) of the SSL requires child care assistance payments +under the NYSCCBGP to be in accordance with OCFS regulations. +2) Legislative Objectives: +The objectives of these amendments are to combat the statewide child +care crisis by assisting families to expand eligibility for child care assistance, obtain affordable, reliable care for their children, standardize the +Child Care Assistance Program (CCAP) across the state, and provide more +stable reimbursement for child care providers. +3) Needs and Benefits: +SSL section 410-x(6) and 410-w(8) previously capped the NYSCCBGP +family share at 10% of the family’s income exceeding the federal poverty +level. These provisions were revised to cap the family share at 1% of the +family’s income exceeding the federal poverty level. SSL section 410u(2), 410-w(1), and 410-w(3) were revised to increase eligibility levels to +85% of the state median income, consistent with federal requirements. +SSL 410-w(3-a) was added to allow for presumptive eligibility during the +NYSCCBGP application period. SSL 410-x(9) was added to require +reimbursement for up to 80 absences per year. SSL 410-x(2) was revised +to remove local priorities and set-asides and instead allow OCFS to establish state priorities under the NYSCCBGP. OCFS must change relevant +child care regulations to achieve compliance with these revisions. +This rule is necessary to implement practices that will comply with +state and federal law, and to combat the statewide child care crisis that has +continued to impact New York State since the onset of the global +pandemic. This rule will require districts to consistently and equitability +prioritize how cases are opened for child care assistance, reimburse providers for up to 20 program closures, including closures for full-day professional development training for licensed or registered providers, per year +and require fast-track eligibility determinations for families already in +receipt of other services, as well as implement additional program integ- + +1 diff --git a/source_conflicts/sources/us-ny/dos-ccap-child-ssi-2024-02-28.txt b/source_conflicts/sources/us-ny/dos-ccap-child-ssi-2024-02-28.txt index dc708f63247..44801626b2b 100644 --- a/source_conflicts/sources/us-ny/dos-ccap-child-ssi-2024-02-28.txt +++ b/source_conflicts/sources/us-ny/dos-ccap-child-ssi-2024-02-28.txt @@ -1,6 +1,250 @@ -Source: https://dos.ny.gov/system/files/documents/2024/02/022824.pdf#page=8 -Retrieved November 12, 2026 from the New York Department of State. -Physical PDF pages 7-8, printed pages 1-2. OCFS revised emergency rule CFS-42-23-00002-ERP took effect February 13, 2024. -Extracted the child-income exclusion from the rule summary on physical page 8; joined wrapped lines and removed line-end hyphenation. +Source: https://dos.ny.gov/system/files/documents/2024/02/022824.pdf#page=7 +Pages 7-8, text extracted with pdftotext (poppler), reading order. -exclude Supplemental Security Income, including state supplemental payments, received by any child(ren) in the household from monthly gross income calculations for child care assistance. +RULE MAKING +ACTIVITIES + +Each rule making is identified by an I.D. No., which consists +of 13 characters. For example, the I.D. No. AAM-01-9600001-E indicates the following: +AAM +-the abbreviation to identify the adopting agency +01 +-the State Register issue number +96 +-the year +00001 +-the Department of State number, assigned upon +receipt of notice. +E +-Emergency Rule Making—permanent action +not intended (This character could also be: A +for Adoption; P for Proposed Rule Making; RP +for Revised Rule Making; EP for a combined +Emergency and Proposed Rule Making; EA for +an Emergency Rule Making that is permanent +and does not expire 90 days after filing.) +Italics contained in text denote new material. Brackets +indicate material to be deleted. + +Department of Agriculture and +Markets +NOTICE OF ADOPTION +Frequency of Inspections and Testing of Devices +I.D. No. AAM-49-23-00008-A +Filing No. 171 +Filing Date: 2024-02-13 +Effective Date: 2024-02-28 +PURSUANT TO THE PROVISIONS OF THE State Administrative Procedure Act, NOTICE is hereby given of the following action: +Action taken: Amendment of section 220.5(b) and (c); repeal of section +220.5(e); addition of new section 220.5(e) to Title 1 NYCRR. +Statutory authority: Agriculture and Markets Law, sections 16, 18 and +179 +Subject: Frequency of Inspections and Testing of Devices. +Purpose: To modify and clarify certain device testing requirements. +Text or summary was published in the December 6, 2023 issue of the +Register, I.D. No. AAM-49-23-00008-P. +Final rule as compared with last published rule: No changes. +Text of rule and any required statements and analyses may be obtained +from: James Willis, Director, Bureau of Weights and Measures, Department of Agriculture and Markets, 10B Airline Drive, Albany, NY 12235, +(518) 457-3146, email: AGMWeigh@Agriculture.ny.gov +Initial Review of Rule +As a rule that requires a RFA, RAFA or JIS, this rule will be initially +reviewed in the calendar year 2027, which is no later than the 3rd year after the year in which this rule is being adopted. + +Assessment of Public Comment +The agency received no public comment. + +Office of Children and Family +Services +NOTICE OF EMERGENCY +ADOPTION +AND REVISED RULE MAKING +NO HEARING(S) SCHEDULED +Expansion of Eligibility for Child Care Assistance Program +I.D. No. CFS-42-23-00002-ERP +Filing No. 177 +Filing Date: 2024-02-13 +Effective Date: 2024-02-13 +PURSUANT TO THE PROVISIONS OF THE State Administrative Procedure Act, NOTICE is hereby given of the following action: +Action Taken: Amendment of Parts 404 and 415 of Title 18 NYCRR. +Statutory authority: Social Services Law, sections 20, 34, 410, 410-u, +410-w, 410-x; L. 2023, ch. 56 +Finding of necessity for emergency rule: Preservation of public health, +public safety and general welfare. +Specific reasons underlying the finding of necessity: This emergency +rule is necessary for the preservation of the general welfare of families in +New York State. Despite efforts to alleviate the child care crisis throughout +the state, many families remain unable to obtain affordable, reliable care +for their children, as many child care providers are forced to close their +doors. To combat this statewide child care crisis for families and providers +on an immediate basis, and to comply with statutory revisions to Social +Services Law 410-u, 410-w, and 410-x that took effect on October 1, 2023, +revisions are being made to Title 18 NYCRR Parts 404 and 415. +This rule will expand income eligibility under the New York State Child +Care Block Grant Program (NYSCCBGP) by increasing the income +threshold to 85% of the state median income and not considering Supplemental Security Income (SSI) payments, including state supplemental +payments, made to children as part of family income. Further, this rule +will expand programmatic eligibility for homeless families, certified or +approved foster parents caring for a child placed in foster care, and families receiving protective services. This rule will require all eligible families to receive assistance when funds are available under the NYSCCBGP, +subject to federal and state priorities. Of eligible families, six categories +will be considered state priorities when funds are limited, including highly +vulnerable populations. Further, this rule will remove local variation by +eliminating set-asides and local priorities, ranking federal priorities and +establishing state priorities for the NYSCCBGP. This rule will also cap the +family share at 1% of the family’s income exceeding the federal poverty +level. Additionally, this rule will allow districts to opt into presumptive +eligibility during the application determination period for the NYSCCBGP. +Also, this rule will provide income stability for providers by requiring +reimbursement for up to 80 absences per child per provider per year and +up to 20 program closures, including closures for full-day professional +development training for licensed and registered providers, per child per +provider per year. In addition, this rule will further support reducing the + +1 + +Rule Making Activities +requirement for redundant documentation by implementing adjunctive +financial eligibility. This rule will also strengthen program integrity by +disallowing payments to providers if such provider is determined ineligible to receive child care assistance payment(s) after certain administrative +actions. Additionally, districts may disqualify a provider from receiving +payments for child care services and/or require a repayment plan to recoup +the overpayment after determining that a provider submitted false claims. +Subject: Expansion of eligibility for child care assistance program. +Purpose: To implement changes to the child care assistance program set +forth in chapter 56 of the Laws of 2023. +Substance of emergency/revised rule (Full text is posted at the following +State website: https://ocfs.ny.gov/main/legal/regulatory/er/): To implement statutory changes to Social Services Law (SSL) required by the 20232024 New York State budget and to further combat the child care crisis +throughout New York State, the New York State Office of Children and +Family Services (OCFS) proposes to amend the child care regulations as +follows: +OCFS proposes to amend regulations to implement changes to SSL +410-u(2) and SSL 410-w(1) and (3) to expand the maximum income +eligibility level under the New York State Child Care Block Grant Program +(NYSCCBGP) from 300% of the state income standard to the federal +maximum of 85% of the state median income. OCFS also proposes to +change the income eligibility level for cases under Title XX of the Social +Security Act to 85% of the state median income. OCFS further proposes to +exclude Supplemental Security Income, including state supplemental payments, received by any child(ren) in the household from monthly gross +income calculations for child care assistance. +OCFS proposes to implement the provisions of SSL 410-x(2) to remove +local priorities and set-asides from regulation for cases funded under both +the NYSCCBGP and Title XX. Families in receipt of child care assistance +as of September 30, 2023, who were identified as a priority population +under a local social services district’s Child and Family Services Plan +shall continue to be prioritized for such assistance, provided they meet all +other applicable eligibility requirements for such assistance. OCFS +proposes to amend programmatic eligibility categories for families that +must be served when funds are available under the NYSCCBGP as well as +allowable categories under Title XX. OCFS proposes to include, without +regard to income or activity, 1) children placed in foster care and 2) children with an open child protective services case or a preventive services +case with a child protective services component when child care assistance is needed to protect the child. OCFS also proposes to include families experiencing homelessness without further activity requirements. +OCFS proposes to require all eligible families be provided child care assistance when funds are available under the NYSCCBGP, subject to +federal and state priorities. For cases funded under the NYSCCBGP, OCFS +also proposes to rank federal priorities as follows: 1) families experiencing homelessness, 2) families with very low income, defined as an income +level up to 300% of the state income standard, provided the family income +does not exceed 85% of the state median income, and 3) families with +children who have special needs. OCFS also proposes to create state priorities to be prioritized in the following order after federal priorities, (1) families with income between 300% of the state income standard and up to +85% of the state median income for whom child care services are needed +for the child’s caretaker(s) to be engaged in work, (2) families in which +the child in need of child care assistance has an open child protective case +or a preventive services case with a child protective services component, +(3) certified or approved foster parent families with a child who has been +placed in foster care residing in the home, (4) families with a teenage parent who is in need of child care assistance to attend high school or an +equivalency program, (5) families where the child’s caretaker is receiving +services for victims of domestic violence or is participating in a screening +or assessment to receive services for victims of domestic violence, and (6) +families where the child’s caretaker is participating in an approved +substance abuse treatment program, or is participating in a screening or +assessment to determine the need for substance abuse treatment. OCFS +proposes to establish that all eligible cases that meet federal priorities +must be opened first in the order prioritized in regulation, followed by +state priorities, as prioritized in regulation, followed by any other eligible +cases based on the date of application/length of time on the waitlist. +OCFS proposes to reduce the maximum family share percentage from +10% of the family’s income over the federal poverty level to 1% of the +family’s income over the federal poverty level, pursuant to SSL 410-w(8) +and 410-x(6). +OCFS proposes to implement presumptive eligibility in regulation pursuant to SSL 410-w(3-a). A social services district may include in its Child +and Family Services Plan the option to provide child care assistance to a +family that has applied for such services during the eligibility determination period. If the family is approved, the authorized child care will be +reimbursed by the NYSCCBGP. If the family is deemed ineligible for the + +2 + +NYS Register/February 28, 2024 +NYSCCBGP, local funds must be used to provide payment for the child +care services authorized during the eligibility determination period. +OCFS proposes to increase reimbursement for absences from child care +to be paid up to 80 days per child per provider per year in accordance with +SSL 410-x(9). OCFS also proposes to add that reimbursement for additional absences due to extenuating circumstances may be allowed on a +case-by-case basis, as determined by OCFS. +OCFS proposes to require reimbursement for program closures to +licensed, registered, and enrolled legally exempt group programs for up to +20 days per provider per year, as needed. OCFS also proposes to expand +situations for reimbursement for program closures to include religious or +cultural holidays for all licensed, registered, and legally exempt group +providers and full-day professional development training for licensed or +registered providers. +OCFS proposes to implement adjunctive financial eligibility. An applicant will automatically be determined financially eligible for child care +assistance, without further investigation or verification, when the child +care services unit has been determined eligible for an approved program +with an eligibility threshold that is equal to or less than the limit for child +care assistance and the determination for such service was made within six +months of the eligibility determination for child care assistance. +OCFS proposes to allow districts to disallow payments for services +provided when the provider is determined ineligible to receive child care +assistance payment(s) after certain administrative actions. Additionally, +districts may disqualify a provider from receiving payments for child care +services and/or require a repayment plan to recoup the overpayment after +determining that a provider submitted false claims. +OCFS proposes to update terminology used throughout the regulations. +This notice is intended to serve as both a notice of emergency adoption +and a notice of revised rule making. The notice of proposed rule making +was published in the State Register on October 18, 2023, I.D. No. CFS42-23-00002-EP. The emergency rule will expire April 12, 2024. +Emergency rule compared with proposed rule: Substantial revisions were +made in section 415.6(c). +Text of rule and any required statements and analyses may be obtained +from: Nicholas Steinbock-Pratt, Office of Children and Family Services, +52 Washington Street, Rensselaer, NY 12144, (518) 473-8411, email: +regcomments@ocfs.ny.gov +Data, views or arguments may be submitted to: Same as above. +Public comment will be received until: 45 days after publication of this +notice. +Revised Regulatory Impact Statement +1) Statutory Authority: +Chapter 56 of the laws of New York State of 2023 authorizes the New +York State Office of Children and Family Services (OCFS) to promulgate +rules and regulations, on an emergency basis, to implement the applicable +statutory provisions. +Section 20(3)(d) of the Social Services Law (SSL) authorizes OCFS to +establish rules, regulations, and policies to carry out OCFS’s powers and +duties under the SSL. +Section 34(3)(f) of the SSL authorizes OCFS to establish regulations +for the administration of public assistance and care within the state. +Section 410(1) of the SSL authorizes a social services official of a +county, city, or town to provide day care for children at public expense and +authorizes OCFS to establish criteria for when such day care is to be +provided. +Section 410-u of the SSL establishes the New York State Child Care +Block Grant Program (NYSCCBGP). +Section 410-w of the SSL delineates which families may be eligible to +receive child care assistance funded by the NYSCCBGP. +Section 410-u(2) and 410-w(1) and (3) of the SSL set the income +eligibility threshold for the NYSCCBGP at 85% state median income. +Section 410-w(3-a) of the SSL allows social services districts to utilize +a presumptive eligibility standard to provide child care assistance during +the eligibility determination period under the NYSCCBGP and authorizes +OCFS to issue guidance regarding the presumptive eligibility criteria to be +used by districts. +Section 410-w(8) and 410-x(6) of the SSL prohibit social services +districts from requiring families to contribute more than 1% of their +income exceeding the federal poverty level as a family share under the +NYSCCBGP. +Section 410-x(2) of the SSL allows OCFS to establish priorities for +families that will be eligible to receive funding under the NYSCCBGP. +Section 410-x(9) of the SSL requires reimbursement for payment on +behalf of children who are temporarily absent from child care for up to 80 +days per year under the NYSCCBGP. +Section 410-x(8) of the SSL requires child care assistance payments +under the NYSCCBGP to be in accordance with OCFS regulations. +2) Legislative Objectives: diff --git a/source_conflicts/sources/us-ny/dos-ccap-emergency-2023-10-18.txt b/source_conflicts/sources/us-ny/dos-ccap-emergency-2023-10-18.txt index c81f6c7c3be..a31a7a54c17 100644 --- a/source_conflicts/sources/us-ny/dos-ccap-emergency-2023-10-18.txt +++ b/source_conflicts/sources/us-ny/dos-ccap-emergency-2023-10-18.txt @@ -1,6 +1,114 @@ Source: https://dos.ny.gov/system/files/documents/2023/10/101823.pdf#page=7 -Retrieved November 12, 2026 from the New York Department of State. -Physical PDF page 7, printed page 1. Extracted the rule identifier and effective-date fields from the emergency/proposed notice for Parts 404 and 415. +Page 7, text extracted with pdftotext (poppler), reading order. +RULE MAKING +ACTIVITIES + +Each rule making is identified by an I.D. No., which consists +of 13 characters. For example, the I.D. No. AAM-01-9600001-E indicates the following: +AAM +-the abbreviation to identify the adopting agency +01 +-the State Register issue number +96 +-the year +00001 +-the Department of State number, assigned upon +receipt of notice. +E +-Emergency Rule Making—permanent action +not intended (This character could also be: A +for Adoption; P for Proposed Rule Making; RP +for Revised Rule Making; EP for a combined +Emergency and Proposed Rule Making; EA for +an Emergency Rule Making that is permanent +and does not expire 90 days after filing.) +Italics contained in text denote new material. Brackets +indicate material to be deleted. + +Office of Children and Family +Services +EMERGENCY/PROPOSED +RULE MAKING +NO HEARING(S) SCHEDULED +Expansion of Eligibility for Child Care Assistance Program I.D. No. CFS-42-23-00002-EP +Filing No. 827 +Filing Date: 2023-09-27 Effective Date: 2023-10-01 +PURSUANT TO THE PROVISIONS OF THE State Administrative Procedure Act, NOTICE is hereby given of the following action: +Proposed Action: Amendment of Parts 404 and 415 of Title 18 NYCRR. +Statutory authority: Social Services Law, sections 20, 34, 410, 410-u, +410-w and 410-x; L. 2023, ch. 56 +Finding of necessity for emergency rule: Preservation of public health, +public safety and general welfare. +Specific reasons underlying the finding of necessity: This emergency +rule is necessary for the preservation of the general welfare of families in +New York state. Despite efforts to alleviate the child care crisis throughout +New York state, many families remain unable to obtain affordable, reliable +care for their children, as many child care providers are forced to close +their doors. To combat this statewide child care crisis for families and +providers on an immediate basis, and to comply with statutory revisions to +Social Services Law 410-u, 410-w, and 410-x that take effect on October +1, 2023, revisions are being made to Title 18 NYCRR Parts 404 and 415. +This rule will expand income eligibility under the New York State Child + +Care Block Grant Program (NYSCCBGP) by increasing the income +threshold to 85 percent of the state median income and not considering +SSI payments made to children as part of family income. Further, this rule +will expand programmatic eligibility for homeless families, families with +a certified or approved foster parent where care is provided to a child +placed in foster care, and protective services. This rule will require all +eligible families to get assistance when funds are available under the +NYSCCBG, subject to federal and state priorities. Of eligible families, six +categories will be considered state priorities when funds are limited, +including highly vulnerable populations. Further, this rule will remove local variation by eliminating set-asides and local priorities, ranking federal +priorities and establishing state priorities for the NYSCCBGP. This rule +will also cap the family share at 1 percent of the family’s income exceeding the federal poverty level. Additionally, this rule will allow districts to +opt into presumptive eligibility during the application determination period for the NYSCCBGP. Also, this rule will provide income stability for +providers by requiring reimbursement for up to 80 absences per child per +provider per year and up to 20 program closures per child per provider per +year. In addition, this rule will further support reducing the requirement +for redundant documentation by implementing adjunctive financial +eligibility. This rule will also strengthen program integrity by disallowing +payments to providers if such provider is determined ineligible to receive +child care assistance payment(s) after certain administrative actions. Additionally, districts may disqualify a provider from receiving payments for +child care services and/or require a repayment plan to recoup the overpayment after determining that a provider submitted false claims. +Subject: Expansion of eligibility for child care assistance program. +Purpose: To implement changes to the child care assistance program set +forth in chapter 56 of the Laws of 2023. +Substance of emergency/proposed rule (Full text is posted at the following State website: https://ocfs.ny.gov/main/legal/regulatory/pc/): To +implement statutory changes to Social Services Law (SSL) required by the +2023-2024 New York State budget and to further combat the child care +crisis throughout New York state, the New York State Office of Children +and Family Services (OCFS) proposes to amend the child care regulations +as follows: +OCFS proposes to amend regulations to implement changes to SSL +410-u(2) and SSL 410-w(1) and (3) to expand the maximum income +eligibility level under the New York State Child Care Block Grant Program +(NYSCCBGP) from 300 percent of the state income standard to the federal +maximum of 85 percent of the state median income. OCFS also proposes +to change the income eligibility level for cases under Title XX of the Social +Security Act to 85 percent of the state median income. OCFS further +proposes to exclude Supplemental Security Income, including state +supplemental payments, received by any child(ren) in the household from +monthly gross income calculations for child care assistance. +OCFS proposes to implement the provisions of SSL 410-x(2) to remove +local priorities and set-asides from regulation for cases funded under both +the NYSCCBG and Title XX. Families in receipt of child care assistance +as of September 30, 2023 who were identified as a priority population +under a local social services districts’ child and family services plan shall +continue to be prioritized for such assistance, provided they meet all other +applicable eligibility requirements for such assistance. OCFS proposes to +amend programmatic eligibility categories for families that must be served +when funds are available under the NYSCCBG as well as allowable categories under Title XX. OCFS proposes to include, without regard to +income or activity, 1) children placed in foster care and 2) children with an +open child protective services case or a preventive services case with a +child protective services component when child care assistance is needed +to protect the child. OCFS also proposes to include families experiencing +homelessness without further activity requirements. OCFS proposes to +require all eligible families be provided child care assistance when funds +are available under the NYSCCBG, subject to federal and state priorities. +For cases funded under the NYSCCBG, OCFS also proposes to rank + +1 diff --git a/source_conflicts/sources/us-ny/lii-404-5-2026-exclusions-end.txt b/source_conflicts/sources/us-ny/lii-404-5-2026-exclusions-end.txt deleted file mode 100644 index a9e634e19ff..00000000000 --- a/source_conflicts/sources/us-ny/lii-404-5-2026-exclusions-end.txt +++ /dev/null @@ -1,7 +0,0 @@ -Source: https://www.law.cornell.edu/regulations/new-york/18-NYCRR-404.5 -Retrieved November 12, 2026. Extracted the final paragraph of subsection (b)(6) and the next subsection heading from LII's HTML. -LII ends subsection (b)(6) at paragraph (xx) and publishes no paragraph (xxi). - -(xx) disaster relief payments other than unemployment compensation. - -(c) Eligibility without regard to financial circumstances. diff --git a/source_conflicts/sources/us-ny/lii-404-5-2026.txt b/source_conflicts/sources/us-ny/lii-404-5-2026.txt new file mode 100644 index 00000000000..18729569a8b --- /dev/null +++ b/source_conflicts/sources/us-ny/lii-404-5-2026.txt @@ -0,0 +1,70 @@ +Source: https://www.law.cornell.edu/regulations/new-york/18-NYCRR-404.5 +Page fetched 2026-11-13. Text extracted from the HTML page: scripts and tags removed, entities decoded, one paragraph per line. + +N.Y. Comp. Codes R. & Regs. Tit. 18 § 404.5 - Financial eligibility +(a) Income maintenance status. +(1) For purposes of financial eligibility for services, the following persons have income maintenance status: +(i) Recipients of ADC-an ADC recipient is any individual who is certified eligible for cash assistance under the ADC program and receives such payments during the period upon which eligibility for social services is based. +(ii) Individuals whose needs are taken into account in computing the grant for eligible persons under the ADC program-these include children and other relatives in the home not eligible for ADC in their own right but whose presence is significant to ADC recipients as "essential persons." +(iii) Recipients of SSI benefits including recipients of State supplementary payments-an SSI recipient is any individual who is certified eligible for cash assistance under the SSI program and receives such payments including State supplementary payments during the period upon which eligibility for social services is based. +(iv) Recipients of foster care or adoption assistance (FCAA)-an FCAA recipient is any child or minor certified eligible for foster care maintenance or adoption assistance who received such benefits during the period upon which eligibility for social services was based. +(v) Recipients of HR-an HR recipient is any individual who is certified eligible for cash assistance under the HR program and who received such payments during the period upon which eligibility for services is based. +(vi) Recipients of MA-an MA recipient is any individual who is certified eligible to receive a medical payment during the period upon which eligibility for services is based. +(2) Persons with income maintenance status shall be financially eligible for services in accordance with the provisions of the then effective comprehensive annual social services program plan. +(3) When financial eligibility for services is based on the income maintenance status of the applicant, such status shall be verified as of the date of application. +(b) Income eligible status. +(1) Individuals, other than those described in subdivision (a) of this section, must be financially eligible for services on the basis of income eligibility status if the monthly gross income of the family is equal to or less than: +(i) the appropriate income eligibility level contained in the then effective consolidated services plan or integrated county plan; +(ii) for New York State Child Care Block Grant child care services, the financial eligibility requirements for such services established by the Office of Children and Family Services in accordance with section 415.2 (a) of this Title. +(2) The determination of family monthly gross income shall be based on the average monthly income for a period of not less than one month nor in excess of three months prior to application, adjusted for any changes in income known or expected to occur during the period of authorization. +(3) If income fluctuates significantly, the average monthly amount shall be computed based on income received during a period of not less than three nor more than six months. +(4) Computation of monthly gross income shall be based on a factor of 4&" of the weekly income. +(5) Monthly gross income means the monthly sum of income received from the following sources: +(i) Monthly wages or salary, i.e., total money earnings received for work performed as an employee, including wages, salary, Armed Forces pay, commissions, tips, piece-rate payments, and cash bonuses earned before deductions are made for taxes, bonds, pensions, union dues and similar purposes. +(ii) Net income for non-farm self-employment, i.e., gross receipts minus expenses from one's own business, professional enterprise, or partnership. Gross receipts include the value of all goods sold and services rendered. Expenses include costs of goods purchased, rent, heat, light, power, wages and salaries paid, business taxes (not personal income taxes) and similar costs. Depreciation, personal business and entertainment expenses, personal transportation, purchase of capital equipment, and payments on the principal of loans for capital assets or durable goods are not counted as expenses for the purpose of determining net income for self-employment for child care assistance. The value of salable merchandise consumed by the proprietors of retail stores is not included as part of net income. +(iii) Net income for farm self-employment, i.e., gross receipts minus operating expenses from the operation of a farm by a person on his own account, as owner, renter or sharecropper. Gross receipts include the value of all products sold, government crop loans, money received from the rental of farm equipment to others, the incidental receipts from the sale of wood, sand, gravel, and similar items. Operating expenses include cost of feed, fertilizer, seed and other farming supplies, cash wages paid to farm hands, cash rent, interest on farm building repairs, farm taxes (not State and Federal income taxes) and similar expenses. Depreciation, personal business and entertainment expenses, personal transportation, purchase of capital equipment, and payments on the principal of loans for capital assets or durable goods are not counted as operating expenses for the purpose of determining net income for self-employment for child care assistance. The value of fuel, food or other farm products used for family living is not included as part of net income. +(iv) Social security benefits include social security pensions and survivor benefits, and permanent disability insurance payments made by the Social Security Administration prior to deductions for medical insurance and railroad retirement checks from the U.S. government. +(v) Dividends, interest (on savings or bonds) income from estates or trusts, net rental income or royalties, including dividends from stockholding or membership in associations, interest on savings or bonds, periodic receipts from estates or trust funds, net income from rental of a house, store or other property to others, receipts from boarders or lodgers and net royalties. +(vi) Public assistance or welfare payments include public assistance payments such as ADC, SSI (including State supplemental payments), and home relief. +(vii) Pensions and annuities include pensions or retirement benefits paid to a retired person or his survivors by a former employer or by a union, either directly or through an insurance company, and periodic receipts from annuities or insurance. +(viii) Unemployment compensation means compensation received from government unemployment insurance agencies or private companies during periods of unemployment and any strike benefits received from union funds. +(ix) Workers' compensation means compensation received periodically from private or public insurance companies for injuries incurred at work. The cost of this insurance must have been paid by the employer and not by the individual. +(x) Alimony. +(xi) Child support. +(xii) Veterans' pensions means money paid periodically by the Veterans' Administration to disabled members of the Armed Forces or to survivors of deceased veterans, subsistence allowances paid to veterans for education and on-the-job training, as well as so- called "refunds" paid to ex-servicemen as GI insurance premiums. +(6) Exclusions from monthly gross income. Excluded from computation of monthly gross income are the following: +(i) per capita payments to or funds held in trust for any individual in satisfaction of a judgment of the Indian Claims Commission or the Court of Claims; +(ii) money received from sale of property, such as stocks, bonds, a house, or a car (unless the person was engaged in the business of selling such property in which case the net proceeds would be counted as income from self-employment); +(iii) withdrawals of bank deposits; +(iv) money borrowed; +(v) tax refunds; +(vi) gifts; +(vii) lump sum inheritances or insurance payments; +(viii) capital gains; +(ix) the value of coupon allotments under the Food Stamp Act of 1964, as amended, in excess of the amount paid for the coupons; +(x) the value of USDA donated foods; +(xi) the value of supplemental food assistance under the Child Nutrition Act of 1966 and the special food service program for children under the National School Lunch Act; +(xii) any payment received under the Uniform Relocation Assistance and Real Property Acquisition Policies Act of 1970; +(xiii) earnings of a dependent child under 18 years of age who is not legally responsible for the child or children for which child care assistance is sought (no inquiry shall be made); +(xiv) loans and grants such as scholarships obtained and used under conditions that preclude their use for current living costs; +(xv) any grant or loan to any undergraduate student for educational purposes made or insured under the Higher Education Act; +(xvi) home produce utilized for household consumption; +(xvii) payments made for child care services, or the value of child care services provided to a recipient of child care services provided under the New York State Child Care Block Grant Program and under title XX of the Social Security Act who is applying for or receiving any other services funded under any Federal or federally assisted program that bases eligibility for such services upon need or the amount of benefits upon need; +(xviii) veterans' assistance payments made to or on behalf of certain Vietnam veterans' natural adult or minor children for any disability resulting from spina bifida suffered by such children; +(xix) veterans' assistance payments made for covered birth defects to or on behalf of the adult or minor children of women Vietnam veterans in service in the Republic of Vietnam during the period beginning on February 28, 1961 and ending on May 7, 1975. Covered birth defects means any birth defect identified by the Veterans' Administration as a birth defect that is associated with the service of women Vietnam veterans in the Republic of Vietnam during the period on February 28, 1961 and ending on May 7, 1975, and that has resulted or may result in permanent physical or mental disability; and +(xx) disaster relief payments other than unemployment compensation. +(c) Eligibility without regard to financial circumstances. +Notwithstanding subdivisions (a) and (b) of this section, individuals and families who are programmatically eligible for the following services will be determined to be eligible for such services without regard to financial eligibility criteria: +(1) information and referral services; +(2) protective services for adults; +(3) protective services for children; +(4) preventive services for children; and +(5) residential services for victims of domestic violence. +(d) Resources. +Financial eligibility for services contained in the district component of the Child and Family Services Plan shall be based only on the monthly gross income of the family as defined in this section. +(1) No exploration of resources shall be made in the determination of eligibility for services, except for child care assistance funded under the New York State Child Care Block Grant Program for which resources are considered in accordance with Part 415 of this Title. +(2) No lien or incumbrance of any kind shall be required from or be imposed against the property of any individual in connection with services rendered or to be rendered. +(3) No adjustment or recovery of the cost of services rendered shall be made, except for child care assistance in accordance with section 415.4 of this Title. +Notes +N.Y. Comp. Codes R. & Regs. Tit. 18 § 404.5 +Amended, New York State Register December 3, 2014/Volume XXXVI, Issue 48 , eff. 12/3/2014 Amended New York State Register June 3, 2020/Volume XLII, Issue 22 , eff. 6/3/2020 Amended New York State Register January 10, 2024/Volume XLVI, Issue 2 , eff. 12/26/2023 , exp. 2/23/2024 (Emergency) Amended New York State Register February 28, 2024/Volume XLVI, Issue 9 , eff. 2/13/2024 , exp. 4/12/2024 (Emergency) Amended New York State Register May 1, 2024/Volume XLVI, Issue 18 , eff. 4/11/2024 , exp. 6/9/2024 (Emergency) diff --git a/source_conflicts/sources/us-ny/ocfs-404-eligibility-2021.txt b/source_conflicts/sources/us-ny/ocfs-404-eligibility-2021.txt new file mode 100644 index 00000000000..b94c2b5df4b --- /dev/null +++ b/source_conflicts/sources/us-ny/ocfs-404-eligibility-2021.txt @@ -0,0 +1,136 @@ +Source: https://web.archive.org/web/20220529152858id_/https://ocfs.ny.gov/programs/childcare/regulations/404-Eligibility.pdf#page=10 +Pages 10-12, text extracted with pdftotext (poppler), reading order. + +404.5(b)(5)(i) +deductions are made for taxes, bonds, pensions, union dues and similar +purposes. +(ii) Net income for non-farm self-employment, i.e., gross receipts minus expenses +from one's own business, professional enterprise, or partnership. Gross receipts +include the value of all goods sold and services rendered. Expenses include +costs of goods purchased, rent, heat, light, power, wages and salaries paid, +business taxes (not personal income taxes) and similar costs. Depreciation, +personal business and entertainment expenses, personal transportation, +purchase of capital equipment, and payments on the principal of loans for capital +assets or durable goods are not counted as expenses for the purpose of +determining net income for self-employment for child care assistance. The value +of salable merchandise consumed by the proprietors of retail stores is not +included as part of net income. +(iii) Net income for farm self-employment, i.e., gross receipts minus operating +expenses from the operation of a farm by a person on his own account, as +owner, renter or sharecropper. Gross receipts include the value of all products +sold, government crop loans, money received from the rental of farm equipment +to others, the incidental receipts from the sale of wood, sand, gravel, and similar +items. Operating expenses include cost of feed, fertilizer, seed and other farming +supplies, cash wages paid to farm hands, cash rent, interest on farm building +repairs, farm taxes (not State and Federal income taxes) and similar expenses. +Depreciation, personal business and entertainment expenses, personal +transportation, purchase of capital equipment, and payments on the principal of +loans for capital assets or durable goods are not counted as operating expenses +for the purpose of determining net income for self-employment for child care +assistance. The value of fuel, food or other farm products used for family living is +not included as part of net income. +(iv) Social security benefits include social security pensions and survivor benefits, +and permanent disability insurance payments made by the Social Security +Administration prior to deductions for medical insurance and railroad retirement +checks from the U.S. government. +(v) Dividends, interest (on savings or bonds) income from estates or trusts, net +rental income or royalties, including dividends from stockholding or membership +in associations, interest on savings or bonds, periodic receipts from estates or +trust funds, net income from rental of a house, store or other property to others, +receipts from boarders or lodgers and net royalties. +(vi) Public assistance or welfare payments include public assistance payments +such as ADC, SSI (including State supplemental payments), and home relief. +(vii) Pensions and annuities include pensions or retirement benefits paid to a +retired person or his survivors by a former employer or by a union, either directly +or through an insurance company, and periodic receipts from annuities or +insurance. + +*This is an unofficial compilation of 18 NYCRR 404 + +10 + +Current as of 11/24/2021 + +404.5(b)(5)(viii) +(viii) Unemployment compensation means compensation received from +government unemployment insurance agencies or private companies during +periods of unemployment and any strike benefits received from union funds. +(ix) Workers' compensation means compensation received periodically from +private or public insurance companies for injuries incurred at work. The cost of +this insurance must have been paid by the employer and not by the individual. +(x) Alimony. +(xi) Child support. +(xii) Veterans' pensions means money paid periodically by the Veterans' +Administration to disabled members of the Armed Forces or to survivors of +deceased veterans, subsistence allowances paid to veterans for education and +on-the-job training, as well as so-called “refunds” paid to ex-servicemen as GI +insurance premiums. +(6) Exclusions from monthly gross income. Excluded from computation of monthly gross +income are the following: +(i) per capita payments to or funds held in trust for any individual in satisfaction of +a judgment of the Indian Claims Commission or the Court of Claims; +(ii) money received from sale of property, such as stocks, bonds, a house, or a +car (unless the person was engaged in the business of selling such property in +which case the net proceeds would be counted as income from selfemployment); +(iii) withdrawals of bank deposits; +(iv) money borrowed; +(v) tax refunds; +(vi) gifts; +(vii) lump sum inheritances or insurance payments; +(viii) capital gains; +(ix) the value of coupon allotments under the Food Stamp Act of 1964, as +amended, in excess of the amount paid for the coupons; +(x) the value of USDA donated foods; +(xi) the value of supplemental food assistance under the Child Nutrition Act of +1966 and the special food service program for children under the National School +Lunch Act; + +*This is an unofficial compilation of 18 NYCRR 404 + +11 + +Current as of 11/24/2021 + +404.5(b)(6)(xii) +(xii) any payment received under the Uniform Relocation Assistance and Real +Property Acquisition Policies Act of 1970; +(xiii) earnings of a dependent child under 18 years of age who is not legally +responsible for the child or children for which child care assistance is sought (no +inquiry shall be made); +(xiv) loans and grants such as scholarships obtained and used under conditions +that preclude their use for current living costs; +(xv) any grant or loan to any undergraduate student for educational purposes +made or insured under the Higher Education Act; +(xvi) home produce utilized for household consumption; +(xvii) payments made for child care services, or the value of child care services +provided to a recipient of child care services provided under the New York State +Child Care Block Grant Program and under title XX of the Social Security Act +who is applying for or receiving any other services funded under any Federal or +federally assisted program that bases eligibility for such services upon need or +the amount of benefits upon need; +(xviii) veterans' assistance payments made to or on behalf of certain Vietnam +veterans' natural adult or minor children for any disability resulting from spina +bifida suffered by such children; +(xix) veterans' assistance payments made for covered birth defects to or on +behalf of the adult or minor children of women Vietnam veterans in service in the +Republic of Vietnam during the period beginning on February 28, 1961 and +ending on May 7, 1975. Covered birth defects means any birth defect identified +by the Veterans' Administration as a birth defect that is associated with the +service of women Vietnam veterans in the Republic of Vietnam during the period +on February 28, 1961 and ending on May 7, 1975, and that has resulted or may +result in permanent physical or mental disability; and +(xx) disaster relief payments other than unemployment compensation. +(c) Eligibility without regard to financial circumstances. +Notwithstanding subdivisions (a) and (b) of this section, individuals and families who are +programmatically eligible for the following services will be determined to be eligible for such +services without regard to financial eligibility criteria: +(1) information and referral services; +(2) protective services for adults; +(3) protective services for children; +(4) preventive services for children; and + +*This is an unofficial compilation of 18 NYCRR 404 + +12 + +Current as of 11/24/2021 diff --git a/source_conflicts/sources/us-ny/ocfs-404-eligibility-2023-child-ssi.txt b/source_conflicts/sources/us-ny/ocfs-404-eligibility-2023-child-ssi.txt index 7579db304a7..df9500a8783 100644 --- a/source_conflicts/sources/us-ny/ocfs-404-eligibility-2023-child-ssi.txt +++ b/source_conflicts/sources/us-ny/ocfs-404-eligibility-2023-child-ssi.txt @@ -1,9 +1,140 @@ -Source: https://ocfs.ny.gov/programs/childcare/regulations/404-Eligibility.pdf#page=12 -Archive: https://web.archive.org/web/20240522174247id_/https://ocfs.ny.gov/programs/childcare/regulations/404-Eligibility.pdf -OCFS compilation current as of October 1, 2023, pages 11-12. Extracted with pdftotext -layout from the archived PDF. -The excerpts retain the exclusion heading and the start of paragraph (xxi). +Source: https://web.archive.org/web/20240522174247id_/https://ocfs.ny.gov/programs/childcare/regulations/404-Eligibility.pdf#page=10 +Pages 10-12, text extracted with pdftotext (poppler), reading order. -(6) Exclusions from monthly gross income. +404.5(b)(5)(i) +deductions are made for taxes, bonds, pensions, union dues and similar +purposes. +(ii) Net income for non-farm self-employment, i.e., gross receipts minus expenses +from one's own business, professional enterprise, or partnership. Gross receipts +include the value of all goods sold and services rendered. Expenses include +costs of goods purchased, rent, heat, light, power, wages and salaries paid, +business taxes (not personal income taxes) and similar costs. Depreciation, +personal business and entertainment expenses, personal transportation, +purchase of capital equipment, and payments on the principal of loans for capital +assets or durable goods are not counted as expenses for the purpose of +determining net income for self-employment for child care assistance. The value +of salable merchandise consumed by the proprietors of retail stores is not +included as part of net income. +(iii) Net income for farm self-employment, i.e., gross receipts minus operating +expenses from the operation of a farm by a person on his own account, as +owner, renter or sharecropper. Gross receipts include the value of all products +sold, government crop loans, money received from the rental of farm equipment +to others, the incidental receipts from the sale of wood, sand, gravel, and similar +items. Operating expenses include cost of feed, fertilizer, seed and other farming +supplies, cash wages paid to farm hands, cash rent, interest on farm building +repairs, farm taxes (not State and Federal income taxes) and similar expenses. +Depreciation, personal business and entertainment expenses, personal +transportation, purchase of capital equipment, and payments on the principal of +loans for capital assets or durable goods are not counted as operating expenses +for the purpose of determining net income for self-employment for child care +assistance. The value of fuel, food or other farm products used for family living is +not included as part of net income. +(iv) Social security benefits include social security pensions and survivor benefits, +and permanent disability insurance payments made by the Social Security +Administration prior to deductions for medical insurance and railroad retirement +checks from the U.S. government. +(v) Dividends, interest (on savings or bonds) income from estates or trusts, net +rental income or royalties, including dividends from stockholding or membership +in associations, interest on savings or bonds, periodic receipts from estates or +trust funds, net income from rental of a house, store or other property to others, +receipts from boarders or lodgers and net royalties. +(vi) Public assistance or welfare payments include public assistance payments +such as ADC, SSI (including State supplemental payments), and home relief. +SSI (including state supplemental payments) received by any child(ren) in the +child care services unit is not counted as income for the purpose of determining +monthly gross income for child care assistance. +(vii) Pensions and annuities include pensions or retirement benefits paid to a +retired person or his survivors by a former employer or by a union, either directly +or through an insurance company, and periodic receipts from annuities or +insurance. +*This is an unofficial compilation of 18 NYCRR 404 + +10 + +Current as of 10/01/2023 + +404.5(b)(5)(viii) +(viii) Unemployment compensation means compensation received from +government unemployment insurance agencies or private companies during +periods of unemployment and any strike benefits received from union funds. +(ix) Workers' compensation means compensation received periodically from +private or public insurance companies for injuries incurred at work. The cost of +this insurance must have been paid by the employer and not by the individual. +(x) Alimony. +(xi) Child support. +(xii) Veterans' pensions means money paid periodically by the Veterans' +Administration to disabled members of the Armed Forces or to survivors of +deceased veterans, subsistence allowances paid to veterans for education and +on-the-job training, as well as so-called “refunds” paid to ex-servicemen as GI +insurance premiums. +(6) Exclusions from monthly gross income. Excluded from computation of monthly gross +income are the following: +(i) per capita payments to or funds held in trust for any individual in satisfaction of +a judgment of the Indian Claims Commission or the Court of Claims; +(ii) money received from sale of property, such as stocks, bonds, a house, or a +car (unless the person was engaged in the business of selling such property in +which case the net proceeds would be counted as income from selfemployment); +(iii) withdrawals of bank deposits; +(iv) money borrowed; +(v) tax refunds; +(vi) gifts; +(vii) lump sum inheritances or insurance payments; +(viii) capital gains; +(ix) the value of coupon allotments under the Food Stamp Act of 1964, as +amended, in excess of the amount paid for the coupons; +(x) the value of USDA donated foods; +(xi) the value of supplemental food assistance under the Child Nutrition Act of +1966 and the special food service program for children under the National School +Lunch Act; + +*This is an unofficial compilation of 18 NYCRR 404 + +11 + +Current as of 10/01/2023 + +404.5(b)(6)(xii) +(xii) any payment received under the Uniform Relocation Assistance and Real +Property Acquisition Policies Act of 1970; +(xiii) earnings of a dependent child under 18 years of age who is not legally +responsible for the child or children for which child care assistance is sought (no +inquiry shall be made); +(xiv) loans and grants such as scholarships obtained and used under conditions +that preclude their use for current living costs; +(xv) any grant or loan to any undergraduate student for educational purposes +made or insured under the Higher Education Act; +(xvi) home produce utilized for household consumption; +(xvii) payments made for child care services, or the value of child care services +provided to a recipient of child care services provided under the New York State +Child Care Block Grant Program and under title XX of the Social Security Act +who is applying for or receiving any other services funded under any Federal or +federally assisted program that bases eligibility for such services upon need or +the amount of benefits upon need; +(xviii) veterans' assistance payments made to or on behalf of certain Vietnam +veterans' natural adult or minor children for any disability resulting from spina +bifida suffered by such children; +(xix) veterans' assistance payments made for covered birth defects to or on +behalf of the adult or minor children of women Vietnam veterans in service in the +Republic of Vietnam during the period beginning on February 28, 1961 and +ending on May 7, 1975. Covered birth defects means any birth defect identified +by the Veterans' Administration as a birth defect that is associated with the +service of women Vietnam veterans in the Republic of Vietnam during the period +on February 28, 1961 and ending on May 7, 1975, and that has resulted or may +result in permanent physical or mental disability; +(xx) disaster relief payments other than unemployment compensation; and (xxi) SSI (including state supplemental payments) received by any child(ren) in -the child care services unit +the child care services unit for a family who is applying for or is in receipt of child +care assistance. +(c) Eligibility without regard to financial circumstances. +Notwithstanding subdivisions (a) and (b) of this section, individuals and families who are +programmatically eligible for the following services will be determined to be eligible for such +services without regard to financial eligibility criteria: +(1) information and referral services; +(2) protective services for adults; + +*This is an unofficial compilation of 18 NYCRR 404 + +12 + +Current as of 10/01/2023 From aa52e74fb22bc424126f6f04a71a0ab46037e620 Mon Sep 17 00:00:00 2001 From: Max Ghenis Date: Fri, 13 Nov 2026 21:26:33 -0500 Subject: [PATCH 09/11] Enter pre-response earnings in a New York court-supervision CCAP case TANF reads employment_income_before_lsr, and the YAML runner does not copy employment_income into it. The model therefore computed a Family Assistance grant for this family with $60,000 of earnings and counted the grant in CCAP income. The case now enters the earnings TANF reads, and its expected values stay the same. Co-Authored-By: Claude Fable 5.2 --- .../baseline/gov/states/ny/ocfs/ccap/court_supervision.yaml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/policyengine_us/tests/policy/baseline/gov/states/ny/ocfs/ccap/court_supervision.yaml b/policyengine_us/tests/policy/baseline/gov/states/ny/ocfs/ccap/court_supervision.yaml index e81da30815f..81546331de1 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/ny/ocfs/ccap/court_supervision.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/ny/ocfs/ccap/court_supervision.yaml @@ -122,11 +122,12 @@ people: person1: age: 45 - employment_income: 50_000 + # TANF reads earnings before labor supply responses. + employment_income_before_lsr: 50_000 weekly_hours_worked_before_lsr: 40 person2: age: 44 - employment_income: 10_000 + employment_income_before_lsr: 10_000 weekly_hours_worked_before_lsr: 20 person3: age: 18 From 3147d74c070ab091035780e389c076511ca416d9 Mon Sep 17 00:00:00 2001 From: Max Ghenis Date: Sat, 14 Nov 2026 09:25:01 -0500 Subject: [PATCH 10/11] Set a zero Family Assistance grant in New York CCAP cases without public assistance Twenty-four ny_ccap.yaml cases, three ny_ccap_family_share_exempt.yaml cases and the categorical-route property tests describe families without Family Assistance but enter no earnings. PolicyEngine computes a grant for those families, and that grant now waives the family share. Set ny_tanf to zero in those fixtures, so each case tests the exception it names. Seven of the ny_ccap.yaml cases expect a share, which a computed grant waives. Every expected value stays the same. Add a case in which reported Family Assistance receipt waives the share with no computed grant. Run the Safety Net Assistance receipt property test, which waited for the receipt input that main now has. Say in ny_safety_net_assistance that household benefits and other programs' income leave these payments out. Co-Authored-By: Claude Fable 5.2 --- ...t_ny_ccap_categorical_routes_invariants.py | 4 ++ ...cap_public_assistance_income_invariants.py | 2 - .../gov/states/ny/ocfs/ccap/ny_ccap.yaml | 72 +++++++++++++++++++ .../ccap/ny_ccap_family_share_exempt.yaml | 22 ++++++ .../ny_safety_net_assistance.py | 4 +- 5 files changed, 101 insertions(+), 3 deletions(-) diff --git a/policyengine_us/tests/core/test_ny_ccap_categorical_routes_invariants.py b/policyengine_us/tests/core/test_ny_ccap_categorical_routes_invariants.py index bea0a02772e..4f47b78c28d 100644 --- a/policyengine_us/tests/core/test_ny_ccap_categorical_routes_invariants.py +++ b/policyengine_us/tests/core/test_ny_ccap_categorical_routes_invariants.py @@ -121,6 +121,10 @@ def _situation(cases, year): unit = { "members": members, "is_tanf_enrolled": {month: family["tanf"]}, + # These families enter no earnings, so PolicyEngine would compute + # a Family Assistance grant and waive the share. Set the grant to + # zero, so only reported enrollment marks Family Assistance receipt. + "ny_tanf": {month: 0}, "meets_ccdf_activity_test": {year: family["fallback"]}, "ny_ccap_countable_income": {year: 12 * family["income"]}, "spm_unit_fpg": {year: 12 * family["fpg"]}, diff --git a/policyengine_us/tests/core/test_ny_ccap_public_assistance_income_invariants.py b/policyengine_us/tests/core/test_ny_ccap_public_assistance_income_invariants.py index e5d00142ae8..7e68aa80065 100644 --- a/policyengine_us/tests/core/test_ny_ccap_public_assistance_income_invariants.py +++ b/policyengine_us/tests/core/test_ny_ccap_public_assistance_income_invariants.py @@ -311,8 +311,6 @@ def test_counted_family_assistance_keeps_the_family_share_zero(system, year, uni @PROPERTY_SETTINGS @given(st.sampled_from(YEARS), st.lists(families(), min_size=2, max_size=6)) def test_safety_net_receipt_alone_keeps_the_family_share_zero(system, year, units): - if "ny_safety_net_assistance_received" not in system.variables: - pytest.skip("The model has no Safety Net Assistance receipt input yet.") cases = [ ( {**family, "enrolled": False, "takeup": False}, diff --git a/policyengine_us/tests/policy/baseline/gov/states/ny/ocfs/ccap/ny_ccap.yaml b/policyengine_us/tests/policy/baseline/gov/states/ny/ocfs/ccap/ny_ccap.yaml index 5840c6adf6f..576ff8f99f6 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/ny/ocfs/ccap/ny_ccap.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/ny/ocfs/ccap/ny_ccap.yaml @@ -281,6 +281,9 @@ members: [caretaker, child] is_tanf_enrolled: 2025-01: false + # The family receives no Family Assistance, which would waive the share. + ny_tanf: + 2025-01: 0 meets_ccdf_activity_test: false ny_ccap_countable_income: 2025: 36_000 @@ -328,6 +331,9 @@ members: [caretaker, child] is_tanf_enrolled: 2025-01: false + # The family receives no Family Assistance, which would waive the share. + ny_tanf: + 2025-01: 0 meets_ccdf_activity_test: false ny_ccap_countable_income: 2025: 36_000 @@ -370,6 +376,9 @@ members: [caretaker, child] is_tanf_enrolled: 2025-01: false + # The family receives no Family Assistance, which would waive the share. + ny_tanf: + 2025-01: 0 meets_ccdf_activity_test: false ny_ccap_countable_income: 2025: 36_000 @@ -545,6 +554,9 @@ members: [caretaker, child] is_tanf_enrolled: 2025-01: false + # The family receives no Family Assistance, which would waive the share. + ny_tanf: + 2025-01: 0 meets_ccdf_activity_test: false ny_ccap_countable_income: 2025: 36_000 @@ -589,6 +601,9 @@ members: [caretaker, child] is_tanf_enrolled: 2025-01: false + # The family receives no Family Assistance, which would waive the share. + ny_tanf: + 2025-01: 0 meets_ccdf_activity_test: false ny_ccap_countable_income: 2025: 36_000 @@ -633,6 +648,9 @@ members: [caretaker, child] is_tanf_enrolled: 2025-01: false + # The family receives no Family Assistance, which would waive the share. + ny_tanf: + 2025-01: 0 meets_ccdf_activity_test: false ny_ccap_countable_income: 2025: 36_000 @@ -677,6 +695,9 @@ members: [caretaker, child] is_tanf_enrolled: 2025-01: false + # The family receives no Family Assistance, which would waive the share. + ny_tanf: + 2025-01: 0 meets_ccdf_activity_test: false ny_ccap_countable_income: 2025: 36_000 @@ -721,6 +742,9 @@ members: [caretaker, child] is_tanf_enrolled: 2025-01: false + # The family receives no Family Assistance, which would waive the share. + ny_tanf: + 2025-01: 0 meets_ccdf_activity_test: false ny_ccap_countable_income: 2025: 36_000 @@ -765,6 +789,9 @@ members: [caretaker, child] is_tanf_enrolled: 2025-01: false + # The family receives no Family Assistance, which would waive the share. + ny_tanf: + 2025-01: 0 meets_ccdf_activity_test: false ny_ccap_countable_income: 2025: 36_000 @@ -810,6 +837,9 @@ members: [caretaker, child] is_tanf_enrolled: 2025-01: false + # The family receives no Family Assistance, which would waive the share. + ny_tanf: + 2025-01: 0 meets_ccdf_activity_test: false ny_ccap_countable_income: 2025: 96_000 @@ -858,6 +888,9 @@ members: [caretaker, child] is_tanf_enrolled: 2025-01: false + # The family receives no Family Assistance, which would waive the share. + ny_tanf: + 2025-01: 0 meets_ccdf_activity_test: false ny_ccap_countable_income: 2025: 96_000 @@ -904,6 +937,9 @@ members: [caretaker, child] is_tanf_enrolled: 2025-01: false + # The family receives no Family Assistance, which would waive the share. + ny_tanf: + 2025-01: 0 meets_ccdf_activity_test: false ny_ccap_countable_income: 2025: 96_000 @@ -956,6 +992,9 @@ members: [caretaker, child] is_tanf_enrolled: 2025-01: false + # The family receives no Family Assistance, which would waive the share. + ny_tanf: + 2025-01: 0 meets_ccdf_activity_test: false ny_ccap_countable_income: 2025: 96_000 @@ -1008,6 +1047,9 @@ members: [caretaker, child] is_tanf_enrolled: 2025-01: false + # The family receives no Family Assistance, which would waive the share. + ny_tanf: + 2025-01: 0 meets_ccdf_activity_test: false ny_ccap_countable_income: 2025: 96_000 @@ -1066,6 +1108,9 @@ members: [caretaker, preventive_child, approved_child] is_tanf_enrolled: 2025-01: false + # The family receives no Family Assistance, which would waive the share. + ny_tanf: + 2025-01: 0 meets_ccdf_activity_test: false ny_ccap_countable_income: 2025: 96_000 @@ -1111,6 +1156,9 @@ members: [caretaker, child] is_tanf_enrolled: 2025-01: false + # The family receives no Family Assistance, which would waive the share. + ny_tanf: + 2025-01: 0 meets_ccdf_activity_test: false ny_ccap_countable_income: 2025: 36_000 @@ -1153,6 +1201,9 @@ members: [caretaker, child] is_tanf_enrolled: 2025-01: false + # The family receives no Family Assistance, which would waive the share. + ny_tanf: + 2025-01: 0 meets_ccdf_activity_test: false ny_ccap_countable_income: 2025: 36_000 @@ -1197,6 +1248,9 @@ members: [caretaker, child] is_tanf_enrolled: 2025-01: false + # The family receives no Family Assistance, which would waive the share. + ny_tanf: + 2025-01: 0 meets_ccdf_activity_test: false ny_ccap_countable_income: 2025: 36_000 @@ -1239,6 +1293,9 @@ members: [caretaker, child] is_tanf_enrolled: 2025-01: false + # The family receives no Family Assistance, which would waive the share. + ny_tanf: + 2025-01: 0 meets_ccdf_activity_test: false ny_ccap_countable_income: 2025: 36_000 @@ -1296,6 +1353,9 @@ members: [caretaker, preventive_child, sibling] is_tanf_enrolled: 2025-01: false + # The family receives no Family Assistance, which would waive the share. + ny_tanf: + 2025-01: 0 meets_ccdf_activity_test: false ny_ccap_countable_income: 2025: 96_000 @@ -1341,6 +1401,9 @@ members: [caretaker, child] is_tanf_enrolled: 2025-01: false + # The family receives no Family Assistance, which would waive the share. + ny_tanf: + 2025-01: 0 ny_safety_net_assistance_received: 2025-01: true meets_ccdf_activity_test: false @@ -1398,6 +1461,9 @@ members: [caretaker, child] is_tanf_enrolled: 2025-07: false + # The family receives no Family Assistance, which would waive the share. + ny_tanf: + 2025-07: 0 meets_ccdf_activity_test: 2025: false ny_ccap_countable_income: @@ -1457,6 +1523,9 @@ - child is_tanf_enrolled: 2025-07: false + # The family receives no Family Assistance, which would waive the share. + ny_tanf: + 2025-07: 0 meets_ccdf_activity_test: 2025: false ny_ccap_countable_income: @@ -1512,6 +1581,9 @@ - child is_tanf_enrolled: 2025-07: false + # The family receives no Family Assistance, which would waive the share. + ny_tanf: + 2025-07: 0 meets_ccdf_activity_test: 2025: false ny_ccap_countable_income: diff --git a/policyengine_us/tests/policy/baseline/gov/states/ny/ocfs/ccap/ny_ccap_family_share_exempt.yaml b/policyengine_us/tests/policy/baseline/gov/states/ny/ocfs/ccap/ny_ccap_family_share_exempt.yaml index 26a77cf7650..362c16d31a2 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/ny/ocfs/ccap/ny_ccap_family_share_exempt.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/ny/ocfs/ccap/ny_ccap_family_share_exempt.yaml @@ -48,6 +48,7 @@ spm_units: spm_unit: members: [child] + ny_tanf: 0 households: household: members: [child] @@ -66,6 +67,7 @@ spm_units: spm_unit: members: [child] + ny_tanf: 0 households: household: members: [child] @@ -83,6 +85,7 @@ spm_units: spm_unit: members: [child] + ny_tanf: 0 households: household: members: [child] @@ -170,3 +173,22 @@ output: ny_ccap_family_assistance: 0 ny_ccap_family_share_exempt: false + +- name: Case 10, reported Family Assistance receipt exempts a family with no computed grant. + period: 2025-01 + input: + people: + child: + age: 3 + spm_units: + spm_unit: + members: [child] + receives_tanf: true + ny_tanf: 0 + households: + household: + members: [child] + state_code: NY + output: + ny_ccap_family_assistance: 0 + ny_ccap_family_share_exempt: true diff --git a/policyengine_us/variables/gov/states/ny/otda/safety_net_assistance/ny_safety_net_assistance.py b/policyengine_us/variables/gov/states/ny/otda/safety_net_assistance/ny_safety_net_assistance.py index 4310d614bea..c5905241354 100644 --- a/policyengine_us/variables/gov/states/ny/otda/safety_net_assistance/ny_safety_net_assistance.py +++ b/policyengine_us/variables/gov/states/ny/otda/safety_net_assistance/ny_safety_net_assistance.py @@ -16,7 +16,9 @@ class ny_safety_net_assistance(Variable): "during the month. New York counts these payments as public " "assistance income for child care under 18 NYCRR 404.5(b)(5)(vi). " "Record a parent's or caretaker relative's receipt separately with " - "ny_safety_net_assistance_received for CCAP categorical routes." + "ny_safety_net_assistance_received for CCAP categorical routes. " + "PolicyEngine does not yet add these payments to household benefits " + "or count them in other programs' income." ) reference = ( "https://ocfs.ny.gov/programs/childcare/regulations/404-Eligibility.pdf#page=10" From cf5d1c1bc6af5ebdab883422ed72806449afcac6 Mon Sep 17 00:00:00 2001 From: Max Ghenis Date: Sat, 14 Nov 2026 15:55:02 -0500 Subject: [PATCH 11/11] Set the New York child SSI candidate's follows value to statute OCFS excludes children's SSI and state supplements from child care assistance income from October 1, 2023, under 18 NYCRR 404.5(b)(5)(vi) and (b)(6)(xxi). The code follows that reading, which we record under readings.statute, so pe_us.follows takes statute, as in South Dakota's candidate. We keep gap-fill, as the file header defines it, for code that follows a form where the statute is silent. Co-Authored-By: Claude Opus 5.5 --- source_conflicts/candidates.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source_conflicts/candidates.yaml b/source_conflicts/candidates.yaml index 09df39d7c16..57b8ebed06d 100644 --- a/source_conflicts/candidates.yaml +++ b/source_conflicts/candidates.yaml @@ -15483,7 +15483,7 @@ candidates: compilation. Under that text, OCFS counts SSI and State supplemental payments for every member, and the exclusions end at paragraph (xx). pe_us: - follows: gap-fill + follows: statute code: - policyengine_us/variables/gov/states/ny/ocfs/ccap/ny_ccap_countable_income.py - policyengine_us/parameters/gov/states/ny/ocfs/ccap/income/countable_income/child_ssi_exclusion_in_effect.yaml