Repository navigation
Compare the Wisconsin Works CMC infant age limit with the child's age in weeks - #10259
Conversation
wi_works_placement compared the 2-month CMC limit (8 weeks, Wis. Stat. 49.148(1m)(a)1) with monthly_age, which is the age in years. Children aged 1 and 2 got the CMC placement and the $673 grant instead of the $653 CSJ grant. Use age x 12, as the state child care age-group variables do, and set age in the placement tests instead of monthly_age. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #10259 +/- ##
=========================================
Coverage 100.00% 100.00%
=========================================
Files 4 1 -3
Lines 76 27 -49
Branches 2 0 -2
=========================================
- Hits 76 27 -49
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
PR Review: Compare the Wisconsin Works CMC infant age limit with the child's age in monthsSummaryThe PR fixes #9815. Before it,
So every child aged 0, 1 or 2 put the unit in CMC, with $673 instead of the $653 CSJ grant. The PR makes two changes:
The fix is right under current law:
Other checks:
One thing needs fixing: the PR body has no The suggestions are optional:
Critical (must fix)None. Should address1. Add the This is a policy fix, because it changes the placement and the grant for children aged 1 and 2. The body has no line starting with Suggestions1. Test close to the 8-week boundary on each side. The new cases test 0 months, 1.5 months ( An age of exactly 2 months is fragile, because
So use ages a little way from the limit, for example: - name: Case 4, CMC with an infant about 7.8 weeks old.
period: 2025-01
input:
people:
person1:
age: 25
person2:
age: 0.15
households:
household1:
members: [person1, person2]
state_code: WI
output:
# 0.15 years x 12 = 1.8 months <= 2 (about 55 days, within 8 weeks)
wi_works_placement: CMC
- name: Case 5, CSJ with an infant about 8.9 weeks old.
period: 2025-01
input:
people:
person1:
age: 25
person2:
age: 0.17
households:
household1:
members: [person1, person2]
state_code: WI
output:
# 0.17 years x 12 = 2.04 months > 2 (about 62 days, past 8 weeks)
wi_works_placement: CSJ2. Encode the limit in weeks, with its history, and fix the reference title. Before this PR the parameter never bound, because years were compared with 2. Now it decides the placement, so three pre-existing details in
Suggested parameter: 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:
1997-09-01: 12
2012-01-01: 8
metadata:
unit: week
period: month
label: Wisconsin Works CMC infant age limit
reference:
- title: Wisconsin Statutes 49.148(1m)(a)1
href: https://docs.legis.wisconsin.gov/statutes/statutes/49/iii/148
- 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_.htmThe 12 is the text that Act 32 struck. The 1997-09-01 start matches In the formula, use
Why this is only a suggestion:
3. Say in the code that age 0 always gives CMC. The PR body says that with ages in whole years, age 0 still gets CMC. In the microdata every age-0 child is 0-11 months old, so every Wisconsin Works unit with one gets $673. Only about 8 of every 52 weeks of that year qualify. The code comment doesn't say this. Something like this would help: # With age in whole years (as in the microdata), every child aged 0
# counts as 8 weeks old or less, so age 0 always gives CMC.4. Open a follow-up issue for the "other adult" exclusion (pre-existing, outside the diff). § 49.148(1m)(a)1 continues: "unless another adult member of the custodial parent's Wisconsin Works group is participating in, or is eligible to participate in, a Wisconsin Works employment position or is employed in unsubsidized employment". Manual 7.4.3.1 adds: "If another adult in the W-2 Group is working in unsubsidized employment or is eligible for W-2 participation, regardless of the W-2 Group's income, the family is not eligible for CMC."
The ARP branch is similar. Para. (a)2 requires "an unmarried woman ... not a custodial parent of a dependent child", but the formula checks only the pregnancy month. Neither gap is changed by this PR. Verified correct
Axiom line assessmentThe body has no
Recommended line. File a dispatch-ready
CI statusAll 29 checks pass at
None is pending or failing. Branch statusThe branch is 2 commits ahead of main (the fix on 2026-10-16 and a merge of main on 2026-10-23) and 48 behind.
No other open PR touches Verdict: REQUEST_CHANGES |
DTrim99
left a comment
There was a problem hiding this comment.
The fix is right: monthly_age is in years, so 1- and 2-year-olds wrongly got CMC $673, and comparing age x 12 against the 2-month limit matches 49.148(1m)(a)1 ('8 weeks old or less') from 2012. All 12 expectations hand-check. One should-address item: there's no axiom line, so please file a pe-parity issue for us-wi/statutes/49/148 and mark it queued. Four suggestions, including near-boundary tests (exactly 1/6 of a year is fragile in float32) and encoding the limit in weeks. Full report in the comment above.
…tory Wis. Stat. 49.148(1m)(a)1 limits the Custodial Parent of an Infant placement to a child "8 weeks old or less". The limit was 12 weeks from the start of W-2 until 2011 Wis. Act 32 (SECTION 1361s) cut it to 8 weeks from January 1, 2012 (SECTION 9408 (1d)). The parameter was a 2-month approximation from 2011-10-01, so ages of 57-60 days still gave CMC, and the 12-week rule before 2012 was missing. - Set the limit to 12 weeks from 1997-09-01 and 8 weeks from 2012-01-01, with unit week. Fix the W-2 Manual section in the reference title (7.4.3, not 7.4.5) and cite the 1997-98 statutes and Act 32. - Compare the limit with age x WEEKS_IN_YEAR. Note that age 0 always gives CMC when ages are whole years. - Add boundary cases at 56 and 57 days (8-week rule) and at 84 and 85 days (12-week rule, 2011), and a 10-week-old in January 2011 (CMC) and January 2012 (CSJ). The ages sit away from the limit, so float32 rounding cannot flip them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Thanks @DTrim99. All items are addressed in b03f836. Disposition of each: Should address1. Suggestions1. Near-boundary tests — done. I used ages from the Manual's day-56/57 split rather than 0.15/0.17, because with the limit in weeks those are the cases that tell the rules apart:
Every boundary age is at least 0.028 weeks from the limit, so float32 rounding cannot flip it. 2. Limit in weeks with its history, and the reference title — done. I checked the sources before the change:
Test gotcha: the pre-2012 cases use January periods on purpose. In local runs with periods outside January (2011-11, 2012-02, 2012-12, 2013-06), the YAML runner did not apply unkeyed inputs of yearly variables such as 3. Comment that age 0 always gives CMC — done. The formula comment now says: "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." 4. Follow-up issue for the "other adult" exclusion — done. Filed #10493. It covers the CMC other-adult exclusion and the ARP "unmarried woman ... not a custodial parent of a dependent child" condition, with your Case 8 example and Manual 7.4.3.1 Examples 1-4. rulespec-us#1948 links it. Checks
|
PR Review (round 2): Compare the Wisconsin Works CMC infant age limit with the child's age in weeksSummarySince round 1 (
I checked the head against the law:
Other checks:
I have one optional suggestion: correct the PR body's count of cases that fail on main. Prior findings
New findingsCritical (must fix)None. Should addressNone. Suggestions1. Correct the PR body's count of cases that fail on main (optional). The Tests section says: "On main, 6 of these cases fail (placement Cases 5, 6, 7, 8 and 10, integration Case 12)." It also says the old parameter's On main, the three January 2011 placement cases (9, 11 and 12) fail as well, with an error instead of a wrong placement:
So 9 cases fail on main: 6 with the wrong placement and 3 with the error. The same three 2011 cases also error at the round-1 head, where the parameter also started on 2011-10-01, so not only the 57-day case fails there. I worked this out by reading the code and didn't run main. This doesn't affect the model. If you update the body, say "9 cases fail on main (6 with the wrong placement; Cases 9, 11 and 12 error because the parameter had no value before 2011-10-01)". Verified correct
Axiom line assessmentValid. The line is
CI status
Branch statusThe branch is 3 commits ahead of main (the fix, a merge of main, and
Verdict: APPROVE |
Summary
wi_works_placementgave the Custodial Parent of an Infant (CMC) placement when a member'smonthly_agewas at or belowcmc_infant_age_limit(2,unit: month).monthly_ageis the age in years evaluated for a month, so any child aged 0, 1 or 2 years gave the unit the CMC placement and the $673 grant instead of the $653 Community Service Job (CSJ) grant.Wis. Stat. § 49.148(1m)(a)1 gives the CMC grant to "a custodial parent of a child 8 weeks old or less", and W-2 Manual 7.4.3 ends the placement 8 weeks (56 days) after the birth. Before January 1, 2012 the limit was 12 weeks: 2011 Wis. Act 32, SECTION 1361s, struck "12" and inserted "8", and SECTION 9408 (1d) (file page 530) made that change take effect on January 1, 2012. The 1997-98 and 2009-10 statutes both read "12 weeks old or less".
Changes:
cmc_infant_age_limitis now in weeks: 12 from 1997-09-01 (the W-2 start date thatamount.yamluses) and 8 from 2012-01-01. It was a 2-month approximation from 2011-10-01, with no value before that date. The W-2 Manual reference title now says 7.4.3 (it said 7.4.5), and the 1997-98 statutes and Act 32 are cited.age * WEEKS_IN_YEAR. With 52 weeks a year, a child of 56 days is 7.97 weeks (CMC) and a child of 57 days is 8.12 weeks (CSJ), the same split as Manual 7.4.3.4. With an age in whole years, age 0 still gets CMC (the model cannot tell an infant of 8 weeks or less from an older infant); the code comment now says so.Reproduction from the issue (January 2025): a child aged 1 or 2 now gives CSJ and $653 (was CMC and $673); age 0 stays CMC and $673; age 3 stays CSJ and $653.
Tests
wi_works_placement.yaml: the cases setagein years instead ofmonthly_age. New cases: 56 days (age: 0.1533, CMC) and 57 days (age: 0.1561, CSJ); 13 weeks, 1 year and 2 years (CSJ); and for the 12-week rule, a 10-week-old in January 2011 (CMC) and January 2012 (CSJ), and 84 days (CMC) and 85 days (CSJ) in January 2011. The boundary ages sit at least 0.028 weeks from the limit, so float32 rounding cannot flip them.integration.yaml: new Case 12, a 1-year-old gives CSJ and $653; the age comments in Cases 2, 9 and 12 use weeks.policyengine-core testonstates/wi/dcf/works: 67 passed.The pre-2012 cases use January periods on purpose. In local runs with monthly test periods outside January (2011-11, 2012-02, 2012-12 and 2013-06), the YAML runner did not apply unkeyed inputs of yearly variables such as
ageandstate_code(they fell back to 40 and CA), so a CSJ expectation would pass by default. January periods (2011-01, 2012-01, 2013-01, 2014-01, 2025-01) applied them.Out of scope: the statute also denies CMC when another adult in the W-2 group works or is W-2 eligible, and limits ARP to an unmarried woman who is not a custodial parent. #10493 tracks both.
axiom: TheAxiomFoundation/rulespec-us#1948 queued
Fixes #9815
🤖 Generated with Claude Code