diff --git a/changelog.d/fix-9815-wi-works-cmc-age.fixed.md b/changelog.d/fix-9815-wi-works-cmc-age.fixed.md new file mode 100644 index 00000000000..c825395c7cb --- /dev/null +++ b/changelog.d/fix-9815-wi-works-cmc-age.fixed.md @@ -0,0 +1 @@ +Compare the Wisconsin Works Custodial Parent of an Infant (CMC) age limit with the child's age in weeks, and set the limit to 12 weeks before 2012 and 8 weeks from 2012, so children aged 1 and 2 no longer get the CMC placement and its $673 grant. diff --git a/policyengine_us/parameters/gov/states/wi/dcf/works/placement/cmc_infant_age_limit.yaml b/policyengine_us/parameters/gov/states/wi/dcf/works/placement/cmc_infant_age_limit.yaml index cf3cedce366..7d2dd6de374 100644 --- a/policyengine_us/parameters/gov/states/wi/dcf/works/placement/cmc_infant_age_limit.yaml +++ b/policyengine_us/parameters/gov/states/wi/dcf/works/placement/cmc_infant_age_limit.yaml @@ -1,15 +1,19 @@ -description: Wisconsin limits the Custodial Parent of Infant placement to parents with children at or below this age in months under the Wisconsin Works program. +description: Wisconsin limits the Custodial Parent of an Infant placement to custodial parents of children at or below this age in weeks under the Wisconsin Works program. values: - 2011-10-01: 2 + 1997-09-01: 12 + 2012-01-01: 8 metadata: - unit: month + unit: week period: month label: Wisconsin Works CMC infant age limit reference: - # Wisconsin statute specifies 8 weeks; 2 months is an approximation. - title: Wisconsin Statutes 49.148(1m)(a)1 href: https://docs.legis.wisconsin.gov/statutes/statutes/49/iii/148 - - title: W-2 Manual 7.4.5 - Custodial Parent of an Infant + - title: 1997-98 Wisconsin Statutes 49.148(1m)(a) + href: https://docs.legis.wisconsin.gov/1997/statutes/statutes/49.pdf#page=19 + - title: "2011 Wisconsin Act 32, sections 1361s and 9408(1d) #page 226,530" + href: https://docs.legis.wisconsin.gov/2011/related/acts/32.pdf#page=226 + - title: W-2 Manual 7.4.3 - Custodial Parent of an Infant (CMC) href: https://dcf.wisconsin.gov/manuals/w-2-manual/Production/07/7.4.3_Custodial_Parent_of_an_Infant_CMC_.htm diff --git a/policyengine_us/tests/policy/baseline/gov/states/wi/dcf/works/integration.yaml b/policyengine_us/tests/policy/baseline/gov/states/wi/dcf/works/integration.yaml index 1a4539a0f86..c78a5381a52 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/wi/dcf/works/integration.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/wi/dcf/works/integration.yaml @@ -36,7 +36,7 @@ is_tax_unit_head_or_spouse: true tanf_gross_earned_income: 1_000 person2: - age: 0 # Newborn (monthly_age = 0 ≤ 2) + age: 0 # Newborn (0 x 52 = 0 weeks ≤ 8) spm_units: spm_unit: members: [person1, person2] @@ -211,7 +211,7 @@ is_tax_unit_head_or_spouse: true tanf_gross_earned_income: 0 person2: - age: 3 # monthly_age = 3 > 2 threshold + age: 3 # 3 x 52 = 156 weeks > 8-week limit spm_units: spm_unit: members: [person1, person2] @@ -280,3 +280,28 @@ wi_works_eligible: true wi_works_placement: CSJ wi_works: 653 + +- name: Case 12, child aged 1 year (above CMC threshold) gets CSJ. + period: 2025-01 + input: + people: + person1: + age: 27 + is_tax_unit_head_or_spouse: true + tanf_gross_earned_income: 0 + person2: + age: 1 # 1 x 52 = 52 weeks > 8-week limit + spm_units: + spm_unit: + members: [person1, person2] + spm_unit_cash_assets: 500 + households: + household: + members: [person1, person2] + state_code: WI + output: + # CMC covers a custodial parent of a child 8 weeks old or less + # (Wis. Stat. 49.148(1m)(a)1); a 1-year-old gets the $653 CSJ grant. + wi_works_eligible: true + wi_works_placement: CSJ + wi_works: 653 diff --git a/policyengine_us/tests/policy/baseline/gov/states/wi/dcf/works/wi_works_placement.yaml b/policyengine_us/tests/policy/baseline/gov/states/wi/dcf/works/wi_works_placement.yaml index 24b7f69b8f3..55d0309f1fc 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/wi/dcf/works/wi_works_placement.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/wi/dcf/works/wi_works_placement.yaml @@ -14,7 +14,7 @@ output: wi_works_placement: CSJ -- name: Case 2, CMC with infant under 2 months. +- name: Case 2, CMC with a newborn. period: 2025-01 input: people: @@ -22,48 +22,179 @@ age: 25 is_pregnant: false person2: - monthly_age: 1 + age: 0 households: household1: members: [person1, person2] state_code: WI output: + # 0 years x 52 = 0 weeks <= 8-week limit (Wis. Stat. 49.148(1m)(a)1) wi_works_placement: CMC -- name: Case 3, CMC with infant exactly 2 months. +- name: Case 3, CMC with an infant 6.5 weeks old. period: 2025-01 input: people: person1: age: 25 person2: - monthly_age: 2 + age: 0.125 households: household1: members: [person1, person2] state_code: WI output: + # 0.125 years x 52 = 6.5 weeks <= 8 wi_works_placement: CMC -- name: Case 4, CSJ with child over 2 months. +- name: Case 4, CMC with an infant 56 days old. period: 2025-01 input: people: person1: age: 25 - # Explicit monthly_age to avoid formula calculation issues - monthly_age: 300 person2: - # monthly_age > 2 to exceed CMC threshold - monthly_age: 3 + age: 0.1533 households: household1: members: [person1, person2] state_code: WI output: + # 0.1533 years (56 days) x 52 = 7.97 weeks <= 8. W-2 Manual 7.4.3.4 + # ends CMC on day 56 (7 days x 8 weeks). + wi_works_placement: CMC + +- name: Case 5, CSJ with an infant 57 days old. + period: 2025-01 + input: + people: + person1: + age: 25 + person2: + age: 0.1561 + households: + household1: + members: [person1, person2] + state_code: WI + output: + # 0.1561 years (57 days) x 52 = 8.12 weeks > 8. A 2-month limit would + # give CMC here (0.1561 x 12 = 1.87 months). + wi_works_placement: CSJ + +- name: Case 6, CSJ with an infant 13 weeks old. + period: 2025-01 + input: + people: + person1: + age: 25 + person2: + age: 0.25 + households: + household1: + members: [person1, person2] + state_code: WI + output: + # 0.25 years x 52 = 13 weeks > 8 + wi_works_placement: CSJ + +- name: Case 7, CSJ with a child aged 1 year. + period: 2025-01 + input: + people: + person1: + age: 25 + person2: + age: 1 + households: + household1: + members: [person1, person2] + state_code: WI + output: + # 1 year x 52 = 52 weeks > 8 + wi_works_placement: CSJ + +- name: Case 8, CSJ with a child aged 2 years. + period: 2025-01 + input: + people: + person1: + age: 25 + person2: + age: 2 + households: + household1: + members: [person1, person2] + state_code: WI + output: + # 2 years x 52 = 104 weeks > 8 + wi_works_placement: CSJ + +- name: Case 9, CMC with an infant 10 weeks old in January 2011. + period: 2011-01 + input: + people: + person1: + age: 25 + person2: + age: 0.19 + households: + household1: + members: [person1, person2] + state_code: WI + output: + # 0.19 years x 52 = 9.88 weeks <= 12. The limit was 12 weeks until + # 2011 Wis. Act 32 cut it to 8 weeks from January 1, 2012. + wi_works_placement: CMC + +- name: Case 10, CSJ with an infant 10 weeks old in January 2012. + period: 2012-01 + input: + people: + person1: + age: 25 + person2: + age: 0.19 + households: + household1: + members: [person1, person2] + state_code: WI + output: + # 0.19 years x 52 = 9.88 weeks > 8 + wi_works_placement: CSJ + +- name: Case 11, CMC with an infant 84 days old in January 2011. + period: 2011-01 + input: + people: + person1: + age: 25 + person2: + age: 0.23 + households: + household1: + members: [person1, person2] + state_code: WI + output: + # 0.23 years (84 days) x 52 = 11.96 weeks <= 12 + wi_works_placement: CMC + +- name: Case 12, CSJ with an infant 85 days old in January 2011. + period: 2011-01 + input: + people: + person1: + age: 25 + person2: + age: 0.233 + households: + household1: + members: [person1, person2] + state_code: WI + output: + # 0.233 years (85 days) x 52 = 12.12 weeks > 12 wi_works_placement: CSJ -- name: Case 5, ARP with pregnant person in third trimester. +- name: Case 13, ARP with pregnant person in third trimester. period: 2025-01 input: people: @@ -78,7 +209,7 @@ output: wi_works_placement: ARP -- name: Case 6, CSJ with pregnant person not in third trimester. +- name: Case 14, CSJ with pregnant person not in third trimester. period: 2025-01 input: people: @@ -93,7 +224,7 @@ output: wi_works_placement: CSJ -- name: Case 7, CMC takes priority over ARP. +- name: Case 15, CMC takes priority over ARP. period: 2025-01 input: people: @@ -102,7 +233,7 @@ is_pregnant: true current_pregnancy_month: 8 person2: - monthly_age: 1 + age: 0 households: household1: members: [person1, person2] diff --git a/policyengine_us/variables/gov/states/wi/dcf/works/wi_works_placement.py b/policyengine_us/variables/gov/states/wi/dcf/works/wi_works_placement.py index 3460af39cdf..e6df57b3f32 100644 --- a/policyengine_us/variables/gov/states/wi/dcf/works/wi_works_placement.py +++ b/policyengine_us/variables/gov/states/wi/dcf/works/wi_works_placement.py @@ -20,15 +20,19 @@ class wi_works_placement(Variable): reference = ( "https://docs.legis.wisconsin.gov/statutes/statutes/49/iii/148", "https://dcf.wisconsin.gov/manuals/w-2-manual/Production/07/7.4.1_Community_Service_Jobs_(CSJ).htm", + "https://dcf.wisconsin.gov/manuals/w-2-manual/Production/07/7.4.3_Custodial_Parent_of_an_Infant_CMC_.htm", ) def formula(spm_unit, period, parameters): p = parameters(period).gov.states.wi.dcf.works.placement person = spm_unit.members - # CMC: Custodial Parent of Infant (child <= 8 weeks ≈ 2 months) - child_age_months = person("monthly_age", period) - has_infant = spm_unit.any(child_age_months <= p.cmc_infant_age_limit) + # CMC: Custodial Parent of Infant (child 8 weeks old or less; + # 12 weeks before 2012). The limit is in weeks and age is in years. + # With age in whole years (as in the microdata), every child aged 0 + # counts as at or below the limit, so age 0 always gives CMC. + age_in_weeks = person("age", period.this_year) * WEEKS_IN_YEAR + has_infant = spm_unit.any(age_in_weeks <= p.cmc_infant_age_limit) # ARP: At Risk Pregnancy (3rd trimester = month 7+) is_pregnant = person("is_pregnant", period)