From 735c8966760f4dbe74f30420d7663392f2e86ec2 Mon Sep 17 00:00:00 2001 From: Pat Wey Date: Fri, 20 Mar 2026 10:18:59 -0700 Subject: [PATCH 1/7] =?UTF-8?q?MFB-675:=20TX=20WAP=20discovery=20=E2=80=94?= =?UTF-8?q?=20add=20spec,=20initial=20config,=20and=20validation=20cases?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data/tx_wap_initial_config.json | 63 ++++ programs/programs/tx/wap/spec.md | 332 ++++++++++++++++++ .../import_validations/data/tx_wap.json | 166 +++++++++ 3 files changed, 561 insertions(+) create mode 100644 programs/management/commands/import_program_config_data/data/tx_wap_initial_config.json create mode 100644 programs/programs/tx/wap/spec.md create mode 100644 validations/management/commands/import_validations/data/tx_wap.json diff --git a/programs/management/commands/import_program_config_data/data/tx_wap_initial_config.json b/programs/management/commands/import_program_config_data/data/tx_wap_initial_config.json new file mode 100644 index 000000000..523396aa7 --- /dev/null +++ b/programs/management/commands/import_program_config_data/data/tx_wap_initial_config.json @@ -0,0 +1,63 @@ +{ + "white_label": { + "code": "tx" + }, + "program_category": { + "external_name": "tx_housing" + }, + "program": { + "name_abbreviated": "tx_wap", + "year": "2025", + "legal_status_required": ["citizen", "non_citizen", "gc_5plus", "gc_5less", "refugee", "otherWithWorkPermission"], + "name": "Weatherization Assistance Program (WAP)", + "description": "The Weatherization Assistance Program (WAP) helps lower your energy bills for free. Workers make your home more energy efficient. This can include adding insulation, sealing air leaks, and fixing heating or cooling systems. There is no cost to you.\n\nTo qualify, your household income must be at or below 200% of the poverty line. You can also qualify if anyone in your home gets SNAP (food stamps), SSI (disability benefits), or TANF (cash help). You must live in Texas. Both homeowners and renters can apply. Families with seniors, people with disabilities, or young children may get help sooner.", + "description_short": "Free home energy upgrades to lower your bills", + "learn_more_link": "https://www.tdhca.state.tx.us/energy/wap/", + "apply_button_link": "https://www.energy.gov/scep/wap/how-apply-weatherization-assistance", + "apply_button_description": "Apply for Texas Weatherization Assistance Program", + "estimated_application_time": "1 - 2 hours", + "estimated_delivery_time": "Varies based on waiting list and funding", + "estimated_value": "", + "website_description": "Free home improvements to save energy and lower utility bills for low-income households" + }, + "warning_message": null, + "documents": [ + { + "external_name": "tx_home", + "text": "Proof of home address (ex: lease, utility bill)", + "link_url": "", + "link_text": "" + }, + { + "external_name": "id_proof", + "text": "Proof of identity (ex: driver's license, state ID)", + "link_url": "", + "link_text": "" + }, + { + "external_name": "tx_earned_income", + "text": "Proof of income for all household members (ex: pay stubs, tax returns, benefit award letters)", + "link_url": "", + "link_text": "" + }, + { + "external_name": "tx_ssn", + "text": "Social Security numbers for all household members", + "link_url": "", + "link_text": "" + }, + { + "external_name": "tx_utility_bills", + "text": "Recent utility bills (electric, gas, or propane) for the past 12 months", + "link_url": "", + "link_text": "" + }, + { + "external_name": "tx_benefit_proof", + "text": "Proof of SNAP, SSI, or TANF benefits if applicable (ex: award letter)", + "link_url": "", + "link_text": "" + } + ], + "navigators": [] +} \ No newline at end of file diff --git a/programs/programs/tx/wap/spec.md b/programs/programs/tx/wap/spec.md new file mode 100644 index 000000000..2af704e28 --- /dev/null +++ b/programs/programs/tx/wap/spec.md @@ -0,0 +1,332 @@ +# Implement Weatherization Assistance Program (TX) Program + +## Program Details + +- **Program**: Weatherization Assistance Program +- **State**: TX +- **White Label**: tx +- **Research Date**: 2026-03-19 + +## Eligibility Criteria + +1. **Household income must be at or below 200% of the Federal Poverty Level (FPL)** + - Screener fields: + - `household_size` + - `incomeStreams (all types)` + - Source: 42 U.S.C. § 6862(7); 10 CFR 440.22(a); DOE WPN 24-1 (updated income guidelines); TDHCA WAP page states income eligibility based on federal poverty guidelines + +2. **Categorical eligibility: Household automatically income-eligible if any member receives SNAP benefits** + - Screener fields: + - `has_snap` + - Source: 10 CFR 440.22(b)(1); 42 U.S.C. § 6862(7)(A) + +3. **Categorical eligibility: Household automatically income-eligible if any member receives SSI (Supplemental Security Income)** + - Screener fields: + - `has_ssi` + - Source: 10 CFR 440.22(b)(1); 42 U.S.C. § 6862(7)(B) + +4. **Categorical eligibility: Household automatically income-eligible if any member receives TANF (Temporary Assistance for Needy Families)** + - Screener fields: + - `has_tanf` + - Source: 10 CFR 440.22(b)(1); 42 U.S.C. § 6862(7)(C) + +5. **Applicant must reside in the state of Texas** + - Screener fields: + - `zipcode` + - `county` + - Source: TDHCA WAP page; 10 CFR 440.22 (state-administered program) + +6. **Priority given to households with elderly members (age 60 or older)** + - Screener fields: + - `age (HouseholdMember)` + - Source: 42 U.S.C. § 6863(b)(1)(B); 10 CFR 440.16(b)(1) + +7. **Priority given to households with disabled members** + - Screener fields: + - `disabled (HouseholdMember)` + - Source: 42 U.S.C. § 6863(b)(1)(B); 10 CFR 440.16(b)(2) + +8. **Priority given to households with children (under age 18 or under age 6 in some state plans)** + - Screener fields: + - `age (HouseholdMember)` + - Source: 42 U.S.C. § 6863(b)(1)(B); 10 CFR 440.16(b)(3) + +9. **Priority given to households with high energy burden (high energy costs relative to income)** + - Screener fields: + - `incomeStreams` + - `household_size` + - Source: 42 U.S.C. § 6863(b)(1)(A); 10 CFR 440.16(a) + +10. **Dwelling must be a residential unit (single-family home, multifamily unit, or mobile home)** + - Screener fields: + - `isHomeOwner` + - `isRenter` + - Source: 10 CFR 440.22; 42 U.S.C. § 6862(6) definition of 'dwelling unit' + +11. **Dwelling must not have been previously weatherized with DOE WAP funds (unless 15+ years have passed or exception applies)** ⚠️ *data gap* + - Note: The screener has no field to capture whether the dwelling has been previously weatherized. This is verified during the application/audit process. The DOE announced in 2024 that the re-weatherization waiting period was reduced from the previous standard to 15 years. + - Source: 10 CFR 440.18(e)(2); 42 U.S.C. § 6865(c)(2); DOE updated re-weatherization rules in 2024 allowing re-weatherization after 15 years + - Impact: Medium + +12. **For rental properties, landlord must provide written permission for weatherization work** ⚠️ *data gap* + - Note: Renters are eligible but must obtain landlord consent. This is an administrative/documentation requirement that cannot be evaluated at the screening stage. + - Source: 10 CFR 440.22(b)(3); TDHCA WAP program requirements + - Impact: Medium + +13. **For rental properties in buildings with 2-4 units, at least 50% of units must be occupied by income-eligible households; for buildings with 5+ units, at least 66% (two-thirds) must be income-eligible** ⚠️ *data gap* + - Note: For multifamily rental buildings, there are building-level eligibility requirements regarding the proportion of income-eligible tenants. This cannot be determined from individual household screener data. + - Source: 10 CFR 440.22(b)(2)(i)-(ii); 42 U.S.C. § 6863(b)(5) + - Impact: Low + +14. **Applicant must provide income documentation (pay stubs, tax returns, benefit award letters, etc.)** ⚠️ *data gap* + - Note: Income verification documentation is required during the formal application process. The screener collects self-reported income but cannot verify documentation. Note: DOE announced in 2024 removal of some burdensome income verification requirements, allowing self-certification in some cases. + - Source: 10 CFR 440.22(a); TDHCA WAP application requirements + - Impact: Low + +15. **Dwelling must pass a health and safety inspection and energy audit before weatherization work begins** ⚠️ *data gap* + - Note: An energy audit and health/safety assessment of the dwelling is required. Dwellings with certain hazardous conditions (e.g., structural deficiencies, active vermiculite insulation containing asbestos) may be deferred. This is determined during the on-site assessment, not at screening. + - Source: 10 CFR 440.21(b); DOE WPN 22-7 (Health and Safety guidance) + - Impact: Medium + +16. **Dwelling must not be designated for acquisition or demolition within 12 months** ⚠️ *data gap* + - Note: Dwellings scheduled for demolition or acquisition by a public entity are not eligible. This cannot be determined from screener data. + - Source: 10 CFR 440.18(e)(1) + - Impact: Low + +17. **Applicant must apply through the local subgrantee/community action agency serving their geographic area** ⚠️ *data gap* + - Note: In Texas, TDHCA contracts with local subgrantees (community action agencies and local governments) to deliver WAP services. Applicants must apply through the subgrantee serving their area. The screener can identify the county/zip but cannot route to the specific subgrantee or verify application submission. + - Source: TDHCA WAP page; DOE 'How to Apply' page + - Impact: Low + +18. **Applicant must be a U.S. citizen or qualified non-citizen (varies by local subgrantee requirements)** ⚠️ *data gap* + - Note: The federal WAP statute (42 U.S.C. § 6861 et seq.) does not contain an explicit citizenship requirement. DOE has historically not required citizenship verification for WAP. However, some local subgrantees may have their own policies. The screener does not collect citizenship/immigration status. Given the federal program's general lack of citizenship restriction, this is noted but not a standard barrier. + - Source: Federal WAP statute does not explicitly require citizenship; however, some states/subgrantees may impose requirements. DOE guidance generally does not restrict based on immigration status for WAP. + - Impact: Low + +19. **Household must occupy the dwelling as their primary residence** ⚠️ *data gap* + - Note: The dwelling must be the applicant's primary residence. Vacation homes, investment properties, and unoccupied units are not eligible. The screener does not explicitly capture whether the dwelling is the primary residence, though isHomeOwner/isRenter implies occupancy. + - Source: 10 CFR 440.22; implicit in program design (weatherization of occupied dwelling units) + - Impact: Low + +## Benefit Value + +- Amount varies by household - see test cases + +## Implementation Coverage + +- ✅ Evaluable criteria: 10 +- ⚠️ Data gaps: 9 + +10 of 19 total criteria can be evaluated or approximated with current screener fields. The core eligibility requirements — income at or below 200% FPL, categorical eligibility via SNAP/SSI/TANF, Texas residency, and dwelling occupancy — are well-covered by the screener. Priority criteria (elderly, disabled, children, high energy burden) can also be assessed. The 9 criteria that cannot be evaluated are primarily administrative, documentation, or dwelling-specific requirements that are verified during the formal application and energy audit process, not at the initial screening stage. + +## Research Sources + +- [DOE Weatherization Assistance Program (WAP) Overview – 42 U.S.C. § 6861 et seq. (Energy Conservation in Existing Buildings Act of 1976)](https://www.energy.gov/scep/wap/weatherization-assistance-program) +- [Texas Weatherization Assistance Program (WAP) – Texas Department of Housing and Community Affairs (TDHCA) – 10 TAC Chapter 6](https://www.tdhca.state.tx.us/energy/wap/) +- [DOE Weatherization Assistance Program (WAP) Overview – Main Content Anchor](https://www.energy.gov/scep/wap/weatherization-assistance-program#main-content) +- [How to Apply for Weatherization Assistance – DOE WAP Application Guide](https://www.energy.gov/scep/wap/how-apply-weatherization-assistance) +- [DOE Weatherization Program Notices (WPNs) and Memorandums – Official Policy Guidance](https://www.energy.gov/scep/wap/weatherization-program-notices-and-memorandums) +- [DOE Weatherization Assistance Program Resource Hub – Training, Tools, and Technical Resources](https://www.energy.gov/scep/wap/weatherization-assistance-program-resource-hub) +- [DOE Weatherization Assistance Program Successes and Solutions Center – Case Studies and Best Practices](https://www.energy.gov/scep/wap/successes-solutions-center) +- [DOE Announces Over $400 Million in WAP Funding and Policy Changes (2025) – Press Release](https://www.energy.gov/cmei/scep/articles/energy-department-announces-over-400-million-funding-and-removes-burdensome) +- [Skip the navigation](https://www.tdhca.state.tx.us/energy/wap/#navskip) +- [Site map](https://www.tdhca.state.tx.us/site_map.htm) + +## Acceptance Criteria + +[ ] Scenario 1 (Clearly Eligible Low-Income Senior Homeowner in Texas): User should be **eligible** with $None/year +[ ] Scenario 2 (Minimally Eligible Single Adult Renter at Income Threshold): User should be **eligible** with $None/year +[ ] Scenario 3 (Family of 4 with Income Just Below 200% FPL Threshold): User should be **eligible** with $None/year +[ ] Scenario 4 (Single Person with Income Exactly at 200% FPL Boundary): User should be **eligible** with $None/year +[ ] Scenario 5 (Family of 3 with Income Just Above 200% FPL - Should Be Ineligible): User should be **ineligible** +[ ] Scenario 6 (Person Exactly Age 60 - Meets Elderly Priority Threshold): User should be **eligible** with $None/year +[ ] Scenario 7 (Eligible Texas Resident in Rural West Texas ZIP Code): User should be **eligible** with $None/year +[ ] Scenario 8 (Out-of-State Resident - Not a Texas Resident Exclusion): User should be **ineligible** +[ ] Scenario 9 (Mixed Household - Elderly Disabled Grandparent, Working-Age Adult, and Child with Income Above 200% FPL): User should be **ineligible** +[ ] Scenario 10 (Multiple Eligible Members - Elderly Couple with Disabled Adult Child and Grandchild, SNAP Recipient): User should be **eligible** with $None/year +[ ] Scenario 11 (Household of 1 with Income Exactly $0 - Zero Income Edge Case with Categorical Eligibility via SSI): User should be **eligible** with $None/year + +## Test Scenarios + +### Scenario 1: Clearly Eligible Low-Income Senior Homeowner in Texas +**What we're checking**: Typical applicant who meets all core eligibility criteria: income below 200% FPL, Texas residency, homeowner, and has elderly priority status +**Expected**: Eligible + +**Steps**: +- **Location**: Enter ZIP code `78702`, Select county `Travis` +- **Household**: Number of people: `2` +- **Person 1**: Birth month/year: `June 1958` (age 67), Relationship: Head of Household, Has income: Yes, Income type: Social Security Retirement, Amount: `$1,100` per month, Disabled: No, Homeowner: Yes +- **Person 2**: Birth month/year: `September 1960` (age 65), Relationship: Spouse, Has income: Yes, Income type: Social Security Retirement, Amount: `$750` per month, Disabled: No +- **Current Benefits**: Select: None currently receiving +- **Citizenship**: Select: US Citizen + +**Why this matters**: This is the most straightforward happy path: a low-income senior couple who own their home in Texas, with income clearly below the 200% FPL threshold. Both members are over 60, triggering elderly priority. This validates that the screener correctly identifies a textbook WAP-eligible household without relying on categorical eligibility from other benefits. + +--- + +### Scenario 2: Minimally Eligible Single Adult Renter at Income Threshold +**What we're checking**: Household with income just below 200% FPL for a single-person household, no priority categories, renter, no categorical eligibility - tests the income boundary +**Expected**: Eligible + +**Steps**: +- **Location**: Enter ZIP code `79901`, Select county `El Paso` +- **Household**: Number of people: `1`, Indicate that you are a renter +- **Person 1**: Birth month/year: `June 1986` (age 39), Relationship: Head of Household, Not disabled, No elderly status (under 60), Has employment income +- **Income**: Enter employment income of `$2,600` per month, This equals $31,200/year, which is just below 200% FPL for a 1-person household in 2025 ($15,650 × 2 = $31,300) +- **Current Benefits**: Do NOT select SNAP, SSI, or TANF - no current benefits +- **Housing**: Indicate renter status, Confirm residential dwelling unit + +**Why this matters**: This tests the absolute income boundary for a single-person household with no categorical eligibility and no priority characteristics. It confirms the screener correctly includes households at exactly 200% FPL without requiring SNAP/SSI/TANF enrollment, and validates that renters (not just homeowners) qualify. + +--- + +### Scenario 3: Family of 4 with Income Just Below 200% FPL Threshold +**What we're checking**: Validates that a household of 4 with gross annual income just below the 200% FPL limit ($62,400 for 2025 guidelines) is determined eligible for WAP +**Expected**: Eligible + +**Steps**: +- **Location**: Enter ZIP code `77001`, Select county `Harris` +- **Household**: Number of people: `4` +- **Person 1**: Birth month/year: `June 1988` (age 37), Relationship: Head of Household, Enter employment income of `$2,575` per `semi-monthly` (twice per month), This yields approximately $61,800/year, which is just below the 200% FPL of ~$62,400 for a household of 4 +- **Person 2**: Birth month/year: `September 1990` (age 35), Relationship: Spouse, No income +- **Person 3**: Birth month/year: `January 2016` (age 10), Relationship: Child, No income +- **Person 4**: Birth month/year: `April 2019` (age 6), Relationship: Child, No income +- **Current Benefits**: Do not select any current benefits (SNAP, SSI, TANF) +- **Housing**: Select that the household rents or owns their home + +**Why this matters**: This tests the critical income boundary for a larger household. A family of 4 earning just under the 200% FPL threshold (~$62,400) should qualify. This ensures the screener correctly applies the FPL table for household size 4 and does not incorrectly reject households that are marginally below the limit. It also differs from previous scenarios by testing a multi-person household without categorical eligibility. + +--- + +### Scenario 4: Single Person with Income Exactly at 200% FPL Boundary +**What we're checking**: Validates that a household with gross annual income exactly equal to 200% of the Federal Poverty Level for a household of 1 is still eligible for WAP +**Expected**: Eligible + +**Steps**: +- **Location**: Enter ZIP code `79901`, Select county `El Paso` +- **Household**: Number of people: `1` +- **Person 1**: Birth month/year: `June 1981` (age 44), Relationship: `Head of Household`, Has income: Yes, Employment income: `$2,608` per month (this equals $31,296/year, which is at 200% FPL for a 1-person household in 2025 guidelines: $15,650 × 2 = $31,300), Not disabled, No current benefits (SNAP, SSI, TANF) +- **Housing**: Indicate applicant is a renter + +**Why this matters**: Boundary testing is critical to ensure the screener correctly implements the 'at or below 200% FPL' income threshold using a less-than-or-equal comparison rather than strictly less-than. A single person earning exactly 200% FPL must qualify. This also differs from previous scenarios by testing a household size of 1 at the exact limit without any categorical eligibility or priority factors. + +--- + +### Scenario 5: Family of 3 with Income Just Above 200% FPL - Should Be Ineligible +**What we're checking**: Verifies that a household of 3 with gross annual income slightly exceeding the 200% FPL threshold ($41,640 for 2025 guidelines) is correctly identified as NOT eligible for WAP +**Expected**: Not eligible + +**Steps**: +- **Location**: Enter ZIP code `78745`, Select county `Travis` +- **Household**: Number of people: `3` +- **Person 1**: Birth month/year: `June 1988` (age 37), Relationship: Head of Household, Has income: Yes, Employment income: `$2,500` per month, No disability +- **Person 2**: Birth month/year: `September 1990` (age 35), Relationship: Spouse, Has income: Yes, Employment income: `$1,050` per month, No disability +- **Person 3**: Birth month/year: `January 2019` (age 7), Relationship: Child, Has income: No, No disability +- **Current Benefits**: Do not select any current benefits (no SNAP, SSI, or TANF) +- **Housing**: Select homeowner or renter as applicable + +**Why this matters**: This test confirms the income ceiling is properly enforced. A family of 3 earning $42,600/year ($960 above the ~$41,640 200% FPL limit) without any categorically qualifying benefits should be denied. This validates the screener correctly rejects applicants who are just over the income threshold for a multi-person household. + +--- + +### Scenario 6: Person Exactly Age 60 - Meets Elderly Priority Threshold +**What we're checking**: Validates that a household member who is exactly 60 years old qualifies for the elderly priority designation under 42 U.S.C. § 6863(b)(1)(B) and 10 CFR 440.16(b)(1), which define elderly as age 60 or older +**Expected**: Eligible + +**Steps**: +- **Location**: Enter ZIP code `78701`, Select county `Travis` +- **Household**: Number of people: `1` +- **Person 1**: Birth month/year: `March 1966` (age exactly 60), Relationship: `Head of Household`, Has income: Yes, Income type: Employment / wages, Income amount: `1800` per month, Not disabled, Citizen +- **Housing**: Housing situation: Homeowner or Renter (select `Renter`), Confirm residential dwelling +- **Current Benefits**: No current benefits selected + +**Why this matters**: The WAP regulations at 10 CFR 440.16(b)(1) define elderly as age 60 or older, creating a priority category. This test verifies the system correctly recognizes someone at exactly the age boundary (60) as meeting the elderly threshold, rather than requiring age 61 or older. Boundary testing at exact thresholds catches off-by-one errors in age comparison logic. + +--- + +### Scenario 7: Eligible Texas Resident in Rural West Texas ZIP Code +**What we're checking**: Validates that a household located within a valid Texas ZIP code and county is recognized as residing in the state of Texas and eligible for the Weatherization Assistance Program service area +**Expected**: Eligible + +**Steps**: +- **Location**: Enter ZIP code `79901`, Select county `El Paso` +- **Household**: Number of people: `2` +- **Person 1**: Birth month/year: `June 1980` (age 45), Relationship: Head of Household, Has income: Yes, Employment income: `$1,200` per month, Homeowner or renter: Renter, Citizenship: US Citizen +- **Person 2**: Birth month/year: `September 2015` (age 10), Relationship: Child, Has income: No +- **Current Benefits**: Select: None + +**Why this matters**: This test confirms that a valid Texas location (El Paso, a major city in far West Texas) is correctly recognized as within the WAP service area. Geographic eligibility is a fundamental requirement per 10 CFR 440.22 and TDHCA's state-administered program boundaries. Testing a geographically distant but still in-state location ensures the system doesn't inadvertently exclude valid Texas ZIP codes outside the central/eastern population centers. + +--- + +### Scenario 8: Out-of-State Resident - Not a Texas Resident Exclusion +**What we're checking**: Validates that a household not residing in Texas is excluded from the Texas Weatherization Assistance Program, as the program requires state residency per TDHCA WAP guidelines and 10 CFR 440.22 +**Expected**: Not eligible + +**Steps**: +- **Location**: Enter ZIP code `73301`, Note: This ZIP code is sometimes mapped ambiguously; if the screener does not recognize it as a valid Texas ZIP or routes to a different state, that confirms the geographic exclusion. Alternatively, if the screener asks for state, select a non-Texas state. +- **Household**: Number of people: `2` +- **Person 1**: Relationship: `Head of Household`, Birth month/year: `June 1986` (age 39), Has income: Yes, Income type: `Employment / Wages`, Income amount: `$1,800` per month ($21,600/year), Disabled: No +- **Person 2**: Relationship: `Spouse`, Birth month/year: `September 1988` (age 37), Has income: No, Disabled: No +- **Current Benefits**: Select `None` - no current benefits +- **Housing**: Select `Renter`, Note: If the screener identifies the location as outside Texas service areas, the household should be excluded regardless of other eligibility factors + +**Why this matters**: The Weatherization Assistance Program is state-administered, and applicants must reside in the administering state (Texas via TDHCA). This test ensures the screener properly enforces the residency/geographic requirement and does not approve applicants who may not be in a Texas service area. This is a fundamental exclusion criterion per 10 CFR 440.22 and TDHCA program rules. + +--- + +### Scenario 9: Mixed Household - Elderly Disabled Grandparent, Working-Age Adult, and Child with Income Above 200% FPL +**What we're checking**: Tests a multi-member household with diverse characteristics (elderly member age 72 with disability, working-age adult age 40, and child age 8) where total household income exceeds 200% FPL for a 3-person household, making them income-ineligible despite having priority-qualifying members (elderly, disabled, child). Also verifies that no categorical eligibility override applies since no qualifying benefits are received. +**Expected**: Not eligible + +**Steps**: +- **Location**: Enter ZIP code `78745`, Select county `Travis` +- **Household**: Number of people: `3` +- **Person 1**: Relationship: `Head of Household`, Birth month/year: `June 1985` (age 40), Has income: Yes, Employment income: `$4,500` per month, Not disabled, No current benefits (SNAP, SSI, TANF) +- **Person 2**: Relationship: `Parent` or `Grandparent`, Birth month/year: `January 1954` (age 72), Has income: Yes, Social Security Retirement income: `$1,200` per month, Disabled: Yes +- **Person 3**: Relationship: `Child`, Birth month/year: `September 2017` (age 8), Has income: No, Not disabled +- **Housing**: Housing type: Homeowner or Renter (select `Homeowner`), Confirm Texas residency +- **Current Benefits**: Do NOT select SNAP, SSI, or TANF, No categorical eligibility benefits + +**Why this matters**: This scenario validates that priority characteristics (elderly, disabled, children) do NOT override the income eligibility requirement. A mixed household with members who would qualify for priority treatment must still meet the 200% FPL income threshold or receive a categorically qualifying benefit. This ensures the screener correctly distinguishes between priority scoring factors and hard eligibility gates. + +--- + +### Scenario 10: Multiple Eligible Members - Elderly Couple with Disabled Adult Child and Grandchild, SNAP Recipient +**What we're checking**: Validates that a multi-member household with multiple priority categories (elderly, disabled, children) and categorical eligibility via SNAP is correctly identified as eligible with all priority flags +**Expected**: Eligible + +**Steps**: +- **Location**: Enter ZIP code `78501`, Select county `Hidalgo` +- **Household**: Number of people: `4` +- **Person 1**: Birth month/year: `June 1958` (age 67), Relationship: Head of Household, Has income: Yes, Social Security Retirement income: `$1,100` per month, Not disabled, Citizenship: US Citizen +- **Person 2**: Birth month/year: `September 1960` (age 65), Relationship: Spouse, Has income: Yes, Social Security Retirement income: `$850` per month, Not disabled, Citizenship: US Citizen +- **Person 3**: Birth month/year: `January 1990` (age 36), Relationship: Child (adult child), Has income: Yes, SSI income: `$943` per month, Disabled: Yes, Citizenship: US Citizen +- **Person 4**: Birth month/year: `August 2018` (age 7), Relationship: Grandchild, Has income: No, Not disabled, Citizenship: US Citizen +- **Current Benefits**: Select SNAP (food stamps), Select SSI +- **Housing**: Housing situation: Homeowner or Renter (select Homeowner) + +**Why this matters**: This scenario tests a complex multi-member household where every priority category (elderly, disabled, children, high energy burden) is represented across different members. It also tests that categorical eligibility via both SNAP and SSI is recognized, and that the screener correctly handles four members with diverse ages, income sources, and characteristics. This ensures the system doesn't miss any priority flags when multiple eligible conditions coexist in the same household. + +--- + +### Scenario 11: Household of 1 with Income Exactly $0 - Zero Income Edge Case with Categorical Eligibility via SSI +**What we're checking**: Tests edge case where household has absolutely zero income but qualifies through SSI categorical eligibility, verifying the system handles $0 income correctly and still processes categorical eligibility and priority flags (disabled) +**Expected**: Eligible + +**Steps**: +- **Location**: Enter ZIP code `78501`, Select county `Hidalgo` +- **Household**: Number of people: `1` +- **Person 1**: Birth month/year: `June 1980` (age 45), Relationship: `Head of Household`, Mark as `disabled`, Has income: `No` (no income of any type), Do NOT select homeowner or renter if possible, or select `renter` to confirm dwelling unit eligibility +- **Current Benefits**: Select `SSI (Supplemental Security Income)` as a current benefit +- **Citizenship**: Select `US Citizen` + +**Why this matters**: Zero-income households are a real edge case that can cause division-by-zero errors or unexpected behavior in income calculations. This tests that the system properly handles $0 income, correctly applies SSI categorical eligibility (10 CFR 440.22(b)(1)), and assigns disability priority (10 CFR 440.16(b)(2)). It also validates that a person who is a renter (not just homeowner) qualifies under the dwelling unit requirement. + +--- + + +## Source Documentation + +- https://www.energy.gov/scep/wap/weatherization-assistance-program +- https://www.tdhca.state.tx.us/energy/wap/ \ No newline at end of file diff --git a/validations/management/commands/import_validations/data/tx_wap.json b/validations/management/commands/import_validations/data/tx_wap.json new file mode 100644 index 000000000..969fe4b88 --- /dev/null +++ b/validations/management/commands/import_validations/data/tx_wap.json @@ -0,0 +1,166 @@ +[ + { + "notes": "TX WAP - Eligible low-income household below 200% FPL", + "household": { + "white_label": "tx", + "is_test": true, + "household_size": 2, + "zipcode": "78702", + "county": "Travis", + "household_assets": 0.0, + "agree_to_tos": true, + "is_13_or_older": true, + "household_members": [ + { + "relationship": "headOfHousehold", + "birth_month": 6, + "birth_year": 1958, + "age": 67, + "has_income": true, + "income_streams": [ + { + "type": "sSRetirement", + "amount": 1100.0, + "frequency": "monthly" + } + ], + "insurance": { + "none": true, + "employer": false, + "private": false, + "medicaid": false, + "medicare": false, + "chp": false, + "va": false + } + }, + { + "relationship": "spouse", + "birth_month": 9, + "birth_year": 1960, + "age": 65, + "has_income": true, + "income_streams": [ + { + "type": "sSRetirement", + "amount": 750.0, + "frequency": "monthly" + } + ], + "insurance": { + "none": true, + "employer": false, + "private": false, + "medicaid": false, + "medicare": false, + "chp": false, + "va": false + } + } + ], + "expenses": [] + }, + "expected_results": { + "program_name": "tx_weatherization assistance program", + "eligible": true + } + }, + { + "notes": "TX WAP - Ineligible household over 200% FPL", + "household": { + "white_label": "tx", + "is_test": true, + "household_size": 1, + "zipcode": "78702", + "county": "Travis", + "household_assets": 0.0, + "agree_to_tos": true, + "is_13_or_older": true, + "household_members": [ + { + "relationship": "headOfHousehold", + "birth_month": 6, + "birth_year": 1986, + "age": 39, + "has_income": true, + "income_streams": [ + { + "type": "wages", + "amount": 3500.0, + "frequency": "monthly" + } + ], + "insurance": { + "none": true, + "employer": false, + "private": false, + "medicaid": false, + "medicare": false, + "chp": false, + "va": false + } + } + ], + "expenses": [] + }, + "expected_results": { + "program_name": "tx_weatherization assistance program", + "eligible": false + } + }, + { + "notes": "TX WAP - Eligible via SNAP categorical eligibility", + "household": { + "white_label": "tx", + "is_test": true, + "household_size": 2, + "zipcode": "78501", + "county": "Hidalgo", + "household_assets": 0.0, + "agree_to_tos": true, + "is_13_or_older": true, + "has_snap": true, + "household_members": [ + { + "relationship": "headOfHousehold", + "birth_month": 6, + "birth_year": 1980, + "age": 45, + "has_income": false, + "income_streams": [], + "insurance": { + "none": true, + "employer": false, + "private": false, + "medicaid": false, + "medicare": false, + "chp": false, + "va": false + } + }, + { + "relationship": "child", + "birth_month": 3, + "birth_year": 2015, + "age": 10, + "has_income": false, + "income_streams": [], + "insurance": { + "none": true, + "employer": false, + "private": false, + "medicaid": false, + "medicare": false, + "chp": false, + "va": false + } + } + ], + "expenses": [] + }, + "expected_results": { + "program_name": "tx_weatherization assistance program", + "eligible": true + } + } +] From 056a0bf805d3c1245a9546024bb62115fffc363b Mon Sep 17 00:00:00 2001 From: Pat Wey Date: Fri, 20 Mar 2026 13:23:31 -0700 Subject: [PATCH 2/7] Add 2-1-1 Texas navigator to TX WAP program config --- .../data/tx_wap_initial_config.json | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/programs/management/commands/import_program_config_data/data/tx_wap_initial_config.json b/programs/management/commands/import_program_config_data/data/tx_wap_initial_config.json index 523396aa7..2de143216 100644 --- a/programs/management/commands/import_program_config_data/data/tx_wap_initial_config.json +++ b/programs/management/commands/import_program_config_data/data/tx_wap_initial_config.json @@ -59,5 +59,16 @@ "link_text": "" } ], - "navigators": [] + "navigators": [ + { + "external_name": "211_texas", + "name": "2-1-1 Texas", + "email": "", + "description": "2-1-1 Texas connects residents with local health and human services resources. Call 2-1-1 to find weatherization assistance providers in your area.", + "assistance_link": "https://www.211texas.org/", + "phone_number": "877-541-7905", + "counties": [], + "languages": [] + } + ] } \ No newline at end of file From 73fe2772fd9972016027cbfbefb362d06894cbea Mon Sep 17 00:00:00 2001 From: Pat Wey Date: Fri, 20 Mar 2026 13:40:23 -0700 Subject: [PATCH 3/7] refine tx_wap spec and program config eligibility criteria - Remove selection priority criteria (elderly, disabled, children, energy burden) from eligibility section - Mark dwelling type as data gap (not collected in TX screener) - Remove administrative criteria: landlord permission, income docs, health/safety inspection, acquisition/demolition, local subgrantee - Update citizenship criterion: WAP has no federal citizenship restriction; all immigration statuses eligible; handled by front-end filtering - Move landlord permission and rental multi-unit rules into program description - Update implementation coverage counts (6 evaluable, 3 data gaps) --- .../data/tx_wap_initial_config.json | 2 +- programs/programs/tx/wap/spec.md | 78 ++++--------------- 2 files changed, 14 insertions(+), 66 deletions(-) diff --git a/programs/management/commands/import_program_config_data/data/tx_wap_initial_config.json b/programs/management/commands/import_program_config_data/data/tx_wap_initial_config.json index 2de143216..6ec15addd 100644 --- a/programs/management/commands/import_program_config_data/data/tx_wap_initial_config.json +++ b/programs/management/commands/import_program_config_data/data/tx_wap_initial_config.json @@ -10,7 +10,7 @@ "year": "2025", "legal_status_required": ["citizen", "non_citizen", "gc_5plus", "gc_5less", "refugee", "otherWithWorkPermission"], "name": "Weatherization Assistance Program (WAP)", - "description": "The Weatherization Assistance Program (WAP) helps lower your energy bills for free. Workers make your home more energy efficient. This can include adding insulation, sealing air leaks, and fixing heating or cooling systems. There is no cost to you.\n\nTo qualify, your household income must be at or below 200% of the poverty line. You can also qualify if anyone in your home gets SNAP (food stamps), SSI (disability benefits), or TANF (cash help). You must live in Texas. Both homeowners and renters can apply. Families with seniors, people with disabilities, or young children may get help sooner.", + "description": "The Weatherization Assistance Program (WAP) helps lower your energy bills for free. Workers make your home more energy efficient. This can include adding insulation, sealing air leaks, and fixing heating or cooling systems. There is no cost to you.\n\nTo qualify, your household income must be at or below 200% of the poverty line. You can also qualify if anyone in your home gets SNAP (food stamps), SSI (disability benefits), or TANF (cash help). You must live in Texas. Both homeowners and renters can apply. Families with seniors, people with disabilities, or young children may get help sooner.\n\nIf you rent, your landlord must agree to the work before it can begin. If you rent in a building with more than one unit, most of your neighbors must also qualify for the program.", "description_short": "Free home energy upgrades to lower your bills", "learn_more_link": "https://www.tdhca.state.tx.us/energy/wap/", "apply_button_link": "https://www.energy.gov/scep/wap/how-apply-weatherization-assistance", diff --git a/programs/programs/tx/wap/spec.md b/programs/programs/tx/wap/spec.md index 2af704e28..dba7d5d07 100644 --- a/programs/programs/tx/wap/spec.md +++ b/programs/programs/tx/wap/spec.md @@ -36,74 +36,22 @@ - `county` - Source: TDHCA WAP page; 10 CFR 440.22 (state-administered program) -6. **Priority given to households with elderly members (age 60 or older)** - - Screener fields: - - `age (HouseholdMember)` - - Source: 42 U.S.C. § 6863(b)(1)(B); 10 CFR 440.16(b)(1) - -7. **Priority given to households with disabled members** - - Screener fields: - - `disabled (HouseholdMember)` - - Source: 42 U.S.C. § 6863(b)(1)(B); 10 CFR 440.16(b)(2) - -8. **Priority given to households with children (under age 18 or under age 6 in some state plans)** - - Screener fields: - - `age (HouseholdMember)` - - Source: 42 U.S.C. § 6863(b)(1)(B); 10 CFR 440.16(b)(3) - -9. **Priority given to households with high energy burden (high energy costs relative to income)** - - Screener fields: - - `incomeStreams` - - `household_size` - - Source: 42 U.S.C. § 6863(b)(1)(A); 10 CFR 440.16(a) - -10. **Dwelling must be a residential unit (single-family home, multifamily unit, or mobile home)** - - Screener fields: - - `isHomeOwner` - - `isRenter` +6. **Dwelling must be a residential unit (single-family home, multifamily unit, or mobile home)** ⚠️ *data gap* + - Note: The TX screener does not collect fields to verify dwelling type. This is confirmed during the application and on-site audit process. - Source: 10 CFR 440.22; 42 U.S.C. § 6862(6) definition of 'dwelling unit' + - Impact: Low -11. **Dwelling must not have been previously weatherized with DOE WAP funds (unless 15+ years have passed or exception applies)** ⚠️ *data gap* +7. **Dwelling must not have been previously weatherized with DOE WAP funds (unless 15+ years have passed or exception applies)** ⚠️ *data gap* - Note: The screener has no field to capture whether the dwelling has been previously weatherized. This is verified during the application/audit process. The DOE announced in 2024 that the re-weatherization waiting period was reduced from the previous standard to 15 years. - Source: 10 CFR 440.18(e)(2); 42 U.S.C. § 6865(c)(2); DOE updated re-weatherization rules in 2024 allowing re-weatherization after 15 years - Impact: Medium -12. **For rental properties, landlord must provide written permission for weatherization work** ⚠️ *data gap* - - Note: Renters are eligible but must obtain landlord consent. This is an administrative/documentation requirement that cannot be evaluated at the screening stage. - - Source: 10 CFR 440.22(b)(3); TDHCA WAP program requirements - - Impact: Medium - -13. **For rental properties in buildings with 2-4 units, at least 50% of units must be occupied by income-eligible households; for buildings with 5+ units, at least 66% (two-thirds) must be income-eligible** ⚠️ *data gap* - - Note: For multifamily rental buildings, there are building-level eligibility requirements regarding the proportion of income-eligible tenants. This cannot be determined from individual household screener data. - - Source: 10 CFR 440.22(b)(2)(i)-(ii); 42 U.S.C. § 6863(b)(5) - - Impact: Low - -14. **Applicant must provide income documentation (pay stubs, tax returns, benefit award letters, etc.)** ⚠️ *data gap* - - Note: Income verification documentation is required during the formal application process. The screener collects self-reported income but cannot verify documentation. Note: DOE announced in 2024 removal of some burdensome income verification requirements, allowing self-certification in some cases. - - Source: 10 CFR 440.22(a); TDHCA WAP application requirements - - Impact: Low - -15. **Dwelling must pass a health and safety inspection and energy audit before weatherization work begins** ⚠️ *data gap* - - Note: An energy audit and health/safety assessment of the dwelling is required. Dwellings with certain hazardous conditions (e.g., structural deficiencies, active vermiculite insulation containing asbestos) may be deferred. This is determined during the on-site assessment, not at screening. - - Source: 10 CFR 440.21(b); DOE WPN 22-7 (Health and Safety guidance) - - Impact: Medium - -16. **Dwelling must not be designated for acquisition or demolition within 12 months** ⚠️ *data gap* - - Note: Dwellings scheduled for demolition or acquisition by a public entity are not eligible. This cannot be determined from screener data. - - Source: 10 CFR 440.18(e)(1) - - Impact: Low - -17. **Applicant must apply through the local subgrantee/community action agency serving their geographic area** ⚠️ *data gap* - - Note: In Texas, TDHCA contracts with local subgrantees (community action agencies and local governments) to deliver WAP services. Applicants must apply through the subgrantee serving their area. The screener can identify the county/zip but cannot route to the specific subgrantee or verify application submission. - - Source: TDHCA WAP page; DOE 'How to Apply' page - - Impact: Low - -18. **Applicant must be a U.S. citizen or qualified non-citizen (varies by local subgrantee requirements)** ⚠️ *data gap* - - Note: The federal WAP statute (42 U.S.C. § 6861 et seq.) does not contain an explicit citizenship requirement. DOE has historically not required citizenship verification for WAP. However, some local subgrantees may have their own policies. The screener does not collect citizenship/immigration status. Given the federal program's general lack of citizenship restriction, this is noted but not a standard barrier. - - Source: Federal WAP statute does not explicitly require citizenship; however, some states/subgrantees may impose requirements. DOE guidance generally does not restrict based on immigration status for WAP. - - Impact: Low +8. **Applicant must be a U.S. citizen or meet immigration status requirements** + - Note: The federal WAP statute (42 U.S.C. § 6861 et seq.) does not contain an explicit citizenship or immigration status requirement, and DOE has historically not required citizenship verification for WAP. This is broader than many federal benefit programs. In Texas, TDHCA follows federal guidelines and does not impose additional immigration status restrictions. As a result, WAP is available to all immigration statuses — citizens, green card holders (regardless of years held), refugees, individuals with work authorization, and undocumented individuals. This criterion is handled by front-end filtering; the `legal_status_required` in the program config should include all statuses. + - Source: 42 U.S.C. § 6861 et seq. (no citizenship restriction); DOE WAP guidance does not restrict by immigration status; TDHCA WAP follows federal eligibility rules + - Screener fields: Handled by front-end (`legal_status_required`) -19. **Household must occupy the dwelling as their primary residence** ⚠️ *data gap* +9. **Household must occupy the dwelling as their primary residence** ⚠️ *data gap* - Note: The dwelling must be the applicant's primary residence. Vacation homes, investment properties, and unoccupied units are not eligible. The screener does not explicitly capture whether the dwelling is the primary residence, though isHomeOwner/isRenter implies occupancy. - Source: 10 CFR 440.22; implicit in program design (weatherization of occupied dwelling units) - Impact: Low @@ -114,10 +62,10 @@ ## Implementation Coverage -- ✅ Evaluable criteria: 10 -- ⚠️ Data gaps: 9 +- ✅ Evaluable criteria: 6 +- ⚠️ Data gaps: 3 -10 of 19 total criteria can be evaluated or approximated with current screener fields. The core eligibility requirements — income at or below 200% FPL, categorical eligibility via SNAP/SSI/TANF, Texas residency, and dwelling occupancy — are well-covered by the screener. Priority criteria (elderly, disabled, children, high energy burden) can also be assessed. The 9 criteria that cannot be evaluated are primarily administrative, documentation, or dwelling-specific requirements that are verified during the formal application and energy audit process, not at the initial screening stage. +6 of 9 total criteria can be evaluated with current screener fields and front-end filtering. The core eligibility requirements — income at or below 200% FPL, categorical eligibility via SNAP/SSI/TANF, Texas residency, and immigration status (via front-end filtering) — are well-covered. The 3 data gaps are dwelling-specific requirements verified during the formal application and on-site audit process. ## Research Sources @@ -329,4 +277,4 @@ ## Source Documentation - https://www.energy.gov/scep/wap/weatherization-assistance-program -- https://www.tdhca.state.tx.us/energy/wap/ \ No newline at end of file +- https://www.tdhca.state.tx.us/energy/wap/ From e3f0b8d5ccc14999854ea58b9fe3f50d98c9dda5 Mon Sep 17 00:00:00 2001 From: Pat Wey Date: Fri, 20 Mar 2026 14:15:55 -0700 Subject: [PATCH 4/7] MFB-675: Set TX WAP benefit value to $372/year based on DOE average energy savings Replaces placeholder with $372/year estimate derived from DOE's published average annual energy savings figure, consistent with CO ($350) and NC ($300) WAP implementations in the codebase. --- programs/programs/tx/wap/spec.md | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/programs/programs/tx/wap/spec.md b/programs/programs/tx/wap/spec.md index dba7d5d07..5a2c59386 100644 --- a/programs/programs/tx/wap/spec.md +++ b/programs/programs/tx/wap/spec.md @@ -58,7 +58,16 @@ ## Benefit Value -- Amount varies by household - see test cases +- **Single value estimate**: $372/year + +**Methodology**: WAP is a one-time weatherization service, but the benefit is expressed as the average annual energy savings delivered to the household post-weatherization. The DOE reports that WAP recipients save an average of $372 or more every year in energy costs. + +TX-specific note: Texas households tend to have above-average cooling loads (hot climate, larger homes), so the national average of $372/year is a reasonable and conservative estimate for TX. Comparable WAP implementations in this codebase use $300–$350/year (NC and CO respectively). + +**Value Estimate Sources**: +- [DOE WAP Overview — "an average of $372 or more every year"](https://www.energy.gov/scep/wap/weatherization-assistance-program) +- CO WAP: `amount = 350` (`programs/programs/co/weatherization_assistance/calculator.py`) +- NC WAP: `amount = 300` (`programs/programs/nc/nc_weatherization/calculator.py`) ## Implementation Coverage @@ -82,17 +91,17 @@ ## Acceptance Criteria -[ ] Scenario 1 (Clearly Eligible Low-Income Senior Homeowner in Texas): User should be **eligible** with $None/year -[ ] Scenario 2 (Minimally Eligible Single Adult Renter at Income Threshold): User should be **eligible** with $None/year -[ ] Scenario 3 (Family of 4 with Income Just Below 200% FPL Threshold): User should be **eligible** with $None/year -[ ] Scenario 4 (Single Person with Income Exactly at 200% FPL Boundary): User should be **eligible** with $None/year +[ ] Scenario 1 (Clearly Eligible Low-Income Senior Homeowner in Texas): User should be **eligible** with $372/year +[ ] Scenario 2 (Minimally Eligible Single Adult Renter at Income Threshold): User should be **eligible** with $372/year +[ ] Scenario 3 (Family of 4 with Income Just Below 200% FPL Threshold): User should be **eligible** with $372/year +[ ] Scenario 4 (Single Person with Income Exactly at 200% FPL Boundary): User should be **eligible** with $372/year [ ] Scenario 5 (Family of 3 with Income Just Above 200% FPL - Should Be Ineligible): User should be **ineligible** -[ ] Scenario 6 (Person Exactly Age 60 - Meets Elderly Priority Threshold): User should be **eligible** with $None/year -[ ] Scenario 7 (Eligible Texas Resident in Rural West Texas ZIP Code): User should be **eligible** with $None/year +[ ] Scenario 6 (Person Exactly Age 60 - Meets Elderly Priority Threshold): User should be **eligible** with $372/year +[ ] Scenario 7 (Eligible Texas Resident in Rural West Texas ZIP Code): User should be **eligible** with $372/year [ ] Scenario 8 (Out-of-State Resident - Not a Texas Resident Exclusion): User should be **ineligible** [ ] Scenario 9 (Mixed Household - Elderly Disabled Grandparent, Working-Age Adult, and Child with Income Above 200% FPL): User should be **ineligible** -[ ] Scenario 10 (Multiple Eligible Members - Elderly Couple with Disabled Adult Child and Grandchild, SNAP Recipient): User should be **eligible** with $None/year -[ ] Scenario 11 (Household of 1 with Income Exactly $0 - Zero Income Edge Case with Categorical Eligibility via SSI): User should be **eligible** with $None/year +[ ] Scenario 10 (Multiple Eligible Members - Elderly Couple with Disabled Adult Child and Grandchild, SNAP Recipient): User should be **eligible** with $372/year +[ ] Scenario 11 (Household of 1 with Income Exactly $0 - Zero Income Edge Case with Categorical Eligibility via SSI): User should be **eligible** with $372/year ## Test Scenarios From 471888c7062d0f7600582d63ccc2d55bb2f2455e Mon Sep 17 00:00:00 2001 From: Pat Wey Date: Fri, 20 Mar 2026 15:35:03 -0700 Subject: [PATCH 5/7] Address CodeRabbit feedback on TX WAP discovery PR MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Remove out-of-state scenario (residency enforced by platform design via TX-only ZIP codes) - Fix validation program_name from "tx_weatherization assistance program" to "tx_wap" to match external_name (critical: was causing all 3 validation scenarios to be skipped) - Remove page-chrome links from research references - Hyphenate "high-energy burden" compound modifier - Renumber scenarios 9-11 → 8-10 after removal --- programs/programs/tx/wap/spec.md | 33 ++++--------------- .../import_validations/data/tx_wap.json | 6 ++-- 2 files changed, 10 insertions(+), 29 deletions(-) diff --git a/programs/programs/tx/wap/spec.md b/programs/programs/tx/wap/spec.md index 5a2c59386..62ad05d4d 100644 --- a/programs/programs/tx/wap/spec.md +++ b/programs/programs/tx/wap/spec.md @@ -86,8 +86,6 @@ TX-specific note: Texas households tend to have above-average cooling loads (hot - [DOE Weatherization Assistance Program Resource Hub – Training, Tools, and Technical Resources](https://www.energy.gov/scep/wap/weatherization-assistance-program-resource-hub) - [DOE Weatherization Assistance Program Successes and Solutions Center – Case Studies and Best Practices](https://www.energy.gov/scep/wap/successes-solutions-center) - [DOE Announces Over $400 Million in WAP Funding and Policy Changes (2025) – Press Release](https://www.energy.gov/cmei/scep/articles/energy-department-announces-over-400-million-funding-and-removes-burdensome) -- [Skip the navigation](https://www.tdhca.state.tx.us/energy/wap/#navskip) -- [Site map](https://www.tdhca.state.tx.us/site_map.htm) ## Acceptance Criteria @@ -98,10 +96,9 @@ TX-specific note: Texas households tend to have above-average cooling loads (hot [ ] Scenario 5 (Family of 3 with Income Just Above 200% FPL - Should Be Ineligible): User should be **ineligible** [ ] Scenario 6 (Person Exactly Age 60 - Meets Elderly Priority Threshold): User should be **eligible** with $372/year [ ] Scenario 7 (Eligible Texas Resident in Rural West Texas ZIP Code): User should be **eligible** with $372/year -[ ] Scenario 8 (Out-of-State Resident - Not a Texas Resident Exclusion): User should be **ineligible** -[ ] Scenario 9 (Mixed Household - Elderly Disabled Grandparent, Working-Age Adult, and Child with Income Above 200% FPL): User should be **ineligible** -[ ] Scenario 10 (Multiple Eligible Members - Elderly Couple with Disabled Adult Child and Grandchild, SNAP Recipient): User should be **eligible** with $372/year -[ ] Scenario 11 (Household of 1 with Income Exactly $0 - Zero Income Edge Case with Categorical Eligibility via SSI): User should be **eligible** with $372/year +[ ] Scenario 8 (Mixed Household - Elderly Disabled Grandparent, Working-Age Adult, and Child with Income Above 200% FPL): User should be **ineligible** +[ ] Scenario 9 (Multiple Eligible Members - Elderly Couple with Disabled Adult Child and Grandchild, SNAP Recipient): User should be **eligible** with $372/year +[ ] Scenario 10 (Household of 1 with Income Exactly $0 - Zero Income Edge Case with Categorical Eligibility via SSI): User should be **eligible** with $372/year ## Test Scenarios @@ -216,23 +213,7 @@ TX-specific note: Texas households tend to have above-average cooling loads (hot --- -### Scenario 8: Out-of-State Resident - Not a Texas Resident Exclusion -**What we're checking**: Validates that a household not residing in Texas is excluded from the Texas Weatherization Assistance Program, as the program requires state residency per TDHCA WAP guidelines and 10 CFR 440.22 -**Expected**: Not eligible - -**Steps**: -- **Location**: Enter ZIP code `73301`, Note: This ZIP code is sometimes mapped ambiguously; if the screener does not recognize it as a valid Texas ZIP or routes to a different state, that confirms the geographic exclusion. Alternatively, if the screener asks for state, select a non-Texas state. -- **Household**: Number of people: `2` -- **Person 1**: Relationship: `Head of Household`, Birth month/year: `June 1986` (age 39), Has income: Yes, Income type: `Employment / Wages`, Income amount: `$1,800` per month ($21,600/year), Disabled: No -- **Person 2**: Relationship: `Spouse`, Birth month/year: `September 1988` (age 37), Has income: No, Disabled: No -- **Current Benefits**: Select `None` - no current benefits -- **Housing**: Select `Renter`, Note: If the screener identifies the location as outside Texas service areas, the household should be excluded regardless of other eligibility factors - -**Why this matters**: The Weatherization Assistance Program is state-administered, and applicants must reside in the administering state (Texas via TDHCA). This test ensures the screener properly enforces the residency/geographic requirement and does not approve applicants who may not be in a Texas service area. This is a fundamental exclusion criterion per 10 CFR 440.22 and TDHCA program rules. - ---- - -### Scenario 9: Mixed Household - Elderly Disabled Grandparent, Working-Age Adult, and Child with Income Above 200% FPL +### Scenario 8: Mixed Household - Elderly Disabled Grandparent, Working-Age Adult, and Child with Income Above 200% FPL **What we're checking**: Tests a multi-member household with diverse characteristics (elderly member age 72 with disability, working-age adult age 40, and child age 8) where total household income exceeds 200% FPL for a 3-person household, making them income-ineligible despite having priority-qualifying members (elderly, disabled, child). Also verifies that no categorical eligibility override applies since no qualifying benefits are received. **Expected**: Not eligible @@ -249,7 +230,7 @@ TX-specific note: Texas households tend to have above-average cooling loads (hot --- -### Scenario 10: Multiple Eligible Members - Elderly Couple with Disabled Adult Child and Grandchild, SNAP Recipient +### Scenario 9: Multiple Eligible Members - Elderly Couple with Disabled Adult Child and Grandchild, SNAP Recipient **What we're checking**: Validates that a multi-member household with multiple priority categories (elderly, disabled, children) and categorical eligibility via SNAP is correctly identified as eligible with all priority flags **Expected**: Eligible @@ -263,11 +244,11 @@ TX-specific note: Texas households tend to have above-average cooling loads (hot - **Current Benefits**: Select SNAP (food stamps), Select SSI - **Housing**: Housing situation: Homeowner or Renter (select Homeowner) -**Why this matters**: This scenario tests a complex multi-member household where every priority category (elderly, disabled, children, high energy burden) is represented across different members. It also tests that categorical eligibility via both SNAP and SSI is recognized, and that the screener correctly handles four members with diverse ages, income sources, and characteristics. This ensures the system doesn't miss any priority flags when multiple eligible conditions coexist in the same household. +**Why this matters**: This scenario tests a complex multi-member household where every priority category (elderly, disabled, children, high-energy burden) is represented across different members. It also tests that categorical eligibility via both SNAP and SSI is recognized, and that the screener correctly handles four members with diverse ages, income sources, and characteristics. This ensures the system doesn't miss any priority flags when multiple eligible conditions coexist in the same household. --- -### Scenario 11: Household of 1 with Income Exactly $0 - Zero Income Edge Case with Categorical Eligibility via SSI +### Scenario 10: Household of 1 with Income Exactly $0 - Zero Income Edge Case with Categorical Eligibility via SSI **What we're checking**: Tests edge case where household has absolutely zero income but qualifies through SSI categorical eligibility, verifying the system handles $0 income correctly and still processes categorical eligibility and priority flags (disabled) **Expected**: Eligible diff --git a/validations/management/commands/import_validations/data/tx_wap.json b/validations/management/commands/import_validations/data/tx_wap.json index 969fe4b88..acc4bca07 100644 --- a/validations/management/commands/import_validations/data/tx_wap.json +++ b/validations/management/commands/import_validations/data/tx_wap.json @@ -61,7 +61,7 @@ "expenses": [] }, "expected_results": { - "program_name": "tx_weatherization assistance program", + "program_name": "tx_wap", "eligible": true } }, @@ -104,7 +104,7 @@ "expenses": [] }, "expected_results": { - "program_name": "tx_weatherization assistance program", + "program_name": "tx_wap", "eligible": false } }, @@ -159,7 +159,7 @@ "expenses": [] }, "expected_results": { - "program_name": "tx_weatherization assistance program", + "program_name": "tx_wap", "eligible": true } } From f768ed3d68b0ea7cc40e82bc3c34005a1c031fcd Mon Sep 17 00:00:00 2001 From: Pat Wey Date: Thu, 26 Mar 2026 11:14:55 -0700 Subject: [PATCH 6/7] MFB-675: Update TX WAP description, learn_more_link, and apply_button_link MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Improve description: merge opening sentences, add process walkthrough (waitlist → auditor → contractor → inspector), clarify multi-unit renter language, add apply instructions for Help for Texans page - Fix learn_more_link to working TDHCA URL - Update apply_button_link to tdhca.texas.gov/help-for-texans - Clear apply_button_description --- .../data/tx_wap_initial_config.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/programs/management/commands/import_program_config_data/data/tx_wap_initial_config.json b/programs/management/commands/import_program_config_data/data/tx_wap_initial_config.json index 6ec15addd..86f296071 100644 --- a/programs/management/commands/import_program_config_data/data/tx_wap_initial_config.json +++ b/programs/management/commands/import_program_config_data/data/tx_wap_initial_config.json @@ -10,11 +10,11 @@ "year": "2025", "legal_status_required": ["citizen", "non_citizen", "gc_5plus", "gc_5less", "refugee", "otherWithWorkPermission"], "name": "Weatherization Assistance Program (WAP)", - "description": "The Weatherization Assistance Program (WAP) helps lower your energy bills for free. Workers make your home more energy efficient. This can include adding insulation, sealing air leaks, and fixing heating or cooling systems. There is no cost to you.\n\nTo qualify, your household income must be at or below 200% of the poverty line. You can also qualify if anyone in your home gets SNAP (food stamps), SSI (disability benefits), or TANF (cash help). You must live in Texas. Both homeowners and renters can apply. Families with seniors, people with disabilities, or young children may get help sooner.\n\nIf you rent, your landlord must agree to the work before it can begin. If you rent in a building with more than one unit, most of your neighbors must also qualify for the program.", + "description": "The Weatherization Assistance Program (WAP) helps lower your energy bills for free by making your home more energy efficient. This can include adding insulation, sealing air leaks, and fixing heating or cooling systems.\n\nAfter you apply, you will be placed on a waitlist. When it is your turn, a trained energy auditor will visit your home to find where energy is being wasted. Then a local contractor will do the work at no cost to you. Finally, an inspector checks the work when it is done.\n\nTo qualify, your household income must be at or below 200% of the poverty line. You can also qualify if anyone in your home gets SNAP (food stamps), SSI (disability benefits), or TANF (cash help). You must live in Texas. Both homeowners and renters can apply. Families with seniors, people with disabilities, or young children may get help sooner.\n\nIf you rent, your landlord must agree to the work before it can begin. If you live in a building with more than one unit, go ahead and apply — the program will check if enough of your neighbors qualify. You do not need to collect information from your neighbors yourself.\n\nA note on applying: After clicking our apply link, select \"Weatherization\", enter your city or county, and submit.", "description_short": "Free home energy upgrades to lower your bills", - "learn_more_link": "https://www.tdhca.state.tx.us/energy/wap/", - "apply_button_link": "https://www.energy.gov/scep/wap/how-apply-weatherization-assistance", - "apply_button_description": "Apply for Texas Weatherization Assistance Program", + "learn_more_link": "https://www.tdhca.texas.gov/weatherization-assistance-program", + "apply_button_link": "https://www.tdhca.texas.gov/help-for-texans", + "apply_button_description": "", "estimated_application_time": "1 - 2 hours", "estimated_delivery_time": "Varies based on waiting list and funding", "estimated_value": "", @@ -71,4 +71,4 @@ "languages": [] } ] -} \ No newline at end of file +} From f5ec4efa4812134e09f5c104b697797e7c7cd093 Mon Sep 17 00:00:00 2001 From: Pat Wey Date: Thu, 26 Mar 2026 13:45:44 -0700 Subject: [PATCH 7/7] MFB-675: Address PR review feedback on TX WAP spec - Remove SNAP as categorical eligibility (not listed in 10 CFR 440.22) - Add LIHEAP as categorical eligibility per 10 CFR 440.22(a)(3) - Tighten SSI/TANF sources to cite 10 CFR 440.22(a)(2) precisely - Remove unsupported citizenship/immigration criterion - Remove primary residence criterion (no valid source cited) - Update TDHCA URL to current site (tdhca.texas.gov) - Update implementation coverage counts --- programs/programs/tx/wap/spec.md | 39 ++++++++++++-------------------- 1 file changed, 15 insertions(+), 24 deletions(-) diff --git a/programs/programs/tx/wap/spec.md b/programs/programs/tx/wap/spec.md index 62ad05d4d..0b806d969 100644 --- a/programs/programs/tx/wap/spec.md +++ b/programs/programs/tx/wap/spec.md @@ -15,20 +15,21 @@ - `incomeStreams (all types)` - Source: 42 U.S.C. § 6862(7); 10 CFR 440.22(a); DOE WPN 24-1 (updated income guidelines); TDHCA WAP page states income eligibility based on federal poverty guidelines -2. **Categorical eligibility: Household automatically income-eligible if any member receives SNAP benefits** - - Screener fields: - - `has_snap` - - Source: 10 CFR 440.22(b)(1); 42 U.S.C. § 6862(7)(A) - -3. **Categorical eligibility: Household automatically income-eligible if any member receives SSI (Supplemental Security Income)** +2. **Categorical eligibility: Household automatically income-eligible if any member receives SSI (Supplemental Security Income)** - Screener fields: - `has_ssi` - - Source: 10 CFR 440.22(b)(1); 42 U.S.C. § 6862(7)(B) + - Source: 10 CFR 440.22(a)(2); 42 U.S.C. § 1381 et seq. (SSA Title XVI) -4. **Categorical eligibility: Household automatically income-eligible if any member receives TANF (Temporary Assistance for Needy Families)** +3. **Categorical eligibility: Household automatically income-eligible if any member receives TANF (Temporary Assistance for Needy Families)** - Screener fields: - `has_tanf` - - Source: 10 CFR 440.22(b)(1); 42 U.S.C. § 6862(7)(C) + - Source: 10 CFR 440.22(a)(2); 42 U.S.C. § 601 et seq. (SSA Title IV) + +4. **Categorical eligibility: Household automatically income-eligible if eligible for LIHEAP (Low-Income Home Energy Assistance Program)** + - Screener fields: + - `has_liheap` *(field needs to be added to screener)* + - Note: The screener currently has `has_il_liheap` (Illinois-specific) but no generic LIHEAP field. A `has_liheap` field will need to be added. + - Source: 10 CFR 440.22(a)(3); 42 U.S.C. § 8621 et seq. 5. **Applicant must reside in the state of Texas** - Screener fields: @@ -46,16 +47,6 @@ - Source: 10 CFR 440.18(e)(2); 42 U.S.C. § 6865(c)(2); DOE updated re-weatherization rules in 2024 allowing re-weatherization after 15 years - Impact: Medium -8. **Applicant must be a U.S. citizen or meet immigration status requirements** - - Note: The federal WAP statute (42 U.S.C. § 6861 et seq.) does not contain an explicit citizenship or immigration status requirement, and DOE has historically not required citizenship verification for WAP. This is broader than many federal benefit programs. In Texas, TDHCA follows federal guidelines and does not impose additional immigration status restrictions. As a result, WAP is available to all immigration statuses — citizens, green card holders (regardless of years held), refugees, individuals with work authorization, and undocumented individuals. This criterion is handled by front-end filtering; the `legal_status_required` in the program config should include all statuses. - - Source: 42 U.S.C. § 6861 et seq. (no citizenship restriction); DOE WAP guidance does not restrict by immigration status; TDHCA WAP follows federal eligibility rules - - Screener fields: Handled by front-end (`legal_status_required`) - -9. **Household must occupy the dwelling as their primary residence** ⚠️ *data gap* - - Note: The dwelling must be the applicant's primary residence. Vacation homes, investment properties, and unoccupied units are not eligible. The screener does not explicitly capture whether the dwelling is the primary residence, though isHomeOwner/isRenter implies occupancy. - - Source: 10 CFR 440.22; implicit in program design (weatherization of occupied dwelling units) - - Impact: Low - ## Benefit Value - **Single value estimate**: $372/year @@ -71,15 +62,15 @@ TX-specific note: Texas households tend to have above-average cooling loads (hot ## Implementation Coverage -- ✅ Evaluable criteria: 6 -- ⚠️ Data gaps: 3 +- ✅ Evaluable criteria: 5 +- ⚠️ Data gaps: 2 -6 of 9 total criteria can be evaluated with current screener fields and front-end filtering. The core eligibility requirements — income at or below 200% FPL, categorical eligibility via SNAP/SSI/TANF, Texas residency, and immigration status (via front-end filtering) — are well-covered. The 3 data gaps are dwelling-specific requirements verified during the formal application and on-site audit process. +5 of 7 total criteria can be evaluated with current screener fields. The core eligibility requirements — income at or below 200% FPL, categorical eligibility via SSI/TANF/LIHEAP, and Texas residency — are well-covered (LIHEAP requires a new `has_liheap` screener field). The 2 data gaps are dwelling-specific requirements verified during the formal application and on-site audit process. ## Research Sources - [DOE Weatherization Assistance Program (WAP) Overview – 42 U.S.C. § 6861 et seq. (Energy Conservation in Existing Buildings Act of 1976)](https://www.energy.gov/scep/wap/weatherization-assistance-program) -- [Texas Weatherization Assistance Program (WAP) – Texas Department of Housing and Community Affairs (TDHCA) – 10 TAC Chapter 6](https://www.tdhca.state.tx.us/energy/wap/) +- [Texas Weatherization Assistance Program (WAP) – Texas Department of Housing and Community Affairs (TDHCA) – 10 TAC Chapter 6](https://www.tdhca.texas.gov/weatherization-assistance-program) - [DOE Weatherization Assistance Program (WAP) Overview – Main Content Anchor](https://www.energy.gov/scep/wap/weatherization-assistance-program#main-content) - [How to Apply for Weatherization Assistance – DOE WAP Application Guide](https://www.energy.gov/scep/wap/how-apply-weatherization-assistance) - [DOE Weatherization Program Notices (WPNs) and Memorandums – Official Policy Guidance](https://www.energy.gov/scep/wap/weatherization-program-notices-and-memorandums) @@ -267,4 +258,4 @@ TX-specific note: Texas households tend to have above-average cooling loads (hot ## Source Documentation - https://www.energy.gov/scep/wap/weatherization-assistance-program -- https://www.tdhca.state.tx.us/energy/wap/ +- https://www.tdhca.texas.gov/weatherization-assistance-program