Plan: Federal Parameter Data Completion

On this page

Status

Step Description Status

1

Audit existing federal parameter files against PAMMS Appendix A

Done (2026-04-09) — found FY2025 values in all 3 files, rounding errors in income limits

2

Update snap-deductions-2026.json to FY2026 COLA values

Done (2026-04-09) — standard deductions $209/$223/$261/$299, shelter cap $744, homeless $199, assets $3,000/$4,500

3

Update snap-income-limits-2026.json if needed

Done (2026-04-09) — fixed 9 rounding errors vs PAMMS, added 165% FPL elderly/disabled and max allotments

4

Add snap-budgeting-factors.json (conversion factors, proration table)

Done (2026-04-09) — conversion factors, proration day table, self-employment 40%, verification minimums

5

Create rulesets/federal/citations.toml for federal parameter provenance

Done (2026-04-09) — 7 citations covering all federal parameter files

6

Verify with cargo xtask policy audit

Done (2026-04-09) — 148/148 citations valid, no staleness warnings

Branch: feature/federal-parameter-completion

Context

A comparison of Canopy’s rulesets/federal/snap-deductions-2026.json against PAMMS Appendix A (effective October 2025, MT-84) reveals the file contains FY2025 values, not FY2026. The FNS annual COLA update was not applied. Additionally, several federal parameters needed by the budgeting engine are not in data files: income conversion factors (weekly/biweekly/semi-monthly), benefit proration day-of-month factors, and the full Basis of Issuance (BOI) tables.

Per ADR-003, all eligibility parameters must be in data files — never hardcoded in Rust. Per ADR-011, every federal parameter file must have a corresponding citation in rulesets/federal/citations.toml.

Scope

In scope:

  • Update snap-deductions-2026.json standard deductions, shelter cap, homeless deduction, and asset limits to FY2026 values

  • Verify snap-income-limits-2026.json matches PAMMS Appendix A exactly

  • Verify snap-allotments-2026.json matches PAMMS Appendix A exactly

  • Create snap-budgeting-factors.json with conversion factors and proration table

  • Create rulesets/federal/citations.toml with FNS/Federal Register provenance for all files

  • Verify fpl-2026.json is current

Out of scope:

  • Georgia-specific parameters (those are in rulesets/georgia/jurisdiction.toml and its citations.toml)

  • JDM ruleset logic changes (covered in Plans 2 and 3)

  • TANF/Medicaid federal parameters (covered in Plans 3 and 4)

Steps

Step 1: Audit Existing Federal Parameter Files

Read each file in rulesets/federal/ and compare against PAMMS source data:

File: snap-deductions-2026.json

Current (FY2025) vs. required (FY2026) from PAMMS dfcs-snap/modules/snap/pages/appendix-a-food-stamp-income-limits.adoc and 3613.adoc:

Parameter Current (FY2025) Required (FY2026)

Standard deduction (AU 1-3)

$198

$209

Standard deduction (AU 4)

$208

$223

Standard deduction (AU 5)

$244

$261

Standard deduction (AU 6+)

$279

$299

Excess shelter cap

$672 ($67,200¢)

$744 ($74,400¢)

Homeless shelter deduction

$180 ($18,000¢)

$199 ($19,900¢)

Asset limit (standard)

$2,750 ($275,000¢)

$3,000 ($300,000¢)

Asset limit (elderly/disabled)

$4,250 ($425,000¢)

$4,500 ($450,000¢)

Dependent care cap (under 2)

$200 ($20,000¢)

$200 (unchanged)

Dependent care cap (2+)

$175 ($17,500¢)

$175 (unchanged)

Medical threshold

$35 ($3,500¢)

$35 (unchanged)

Earned income deduction %

20%

20% (unchanged)

NOTE
Georgia eliminates dependent care caps via state option (PAMMS 3615). The federal file retains the federal caps; jurisdiction.toml sets dependent_care_capped = false.

File: snap-income-limits-2026.json

Verify against PAMMS Appendix A income limits table:

HH Size Gross 130% FPL Net 100% FPL Elderly/Disabled 165% FPL Max Allotment

1

$1,696

$1,305

$2,152

$298

2

$2,292

$1,763

$2,909

$546

3

$2,888

$2,221

$3,665

$785

4

$3,483

$2,680

$4,421

$994

5

$4,079

$3,138

$5,177

$1,183

6

$4,675

$3,596

$5,934

$1,421

7

$5,271

$4,055

$6,690

$1,571

8

$5,867

$4,513

$7,446

$1,789

Each add’l

+$596

+$459

+$757

+$218

Minimum allotment for 1-2 person AUs: $24 (was $23 in FY2025).

Step 2: Update snap-deductions-2026.json

Replace the FY2025 values with FY2026 values from the table above. The file structure stays the same — only numeric values change.

File: rulesets/federal/snap-deductions-2026.json

{
  "_comment": "SNAP deduction parameters for FY2026 (October 2025 - September 2026).",
  "_source": "FNS Federal Register, SNAP Cost-of-Living Adjustments, PAMMS Appendix A MT-84",
  "_fiscal_year": "2026",
  "_effective_date": "2025-10-01",
  "standard_deduction": {
    "_comment": "Standard deduction by household size (7 CFR 273.9(d)(1))",
    "1_3": 209,
    "4": 223,
    "5": 261,
    "6_plus": 299
  },
  "earned_income_deduction_pct": 20,
  "dependent_care_deduction_max_cents": {
    "under_2": 20000,
    "2_and_over": 17500
  },
  "medical_deduction_threshold_cents": 3500,
  "excess_shelter_deduction_cap_cents": 74400,
  "homeless_shelter_deduction_cents": 19900,
  "net_income_limit_pct_fpl": 100,
  "gross_income_limit_pct_fpl": 130,
  "asset_limit_cents": {
    "standard": 300000,
    "elderly_disabled": 450000
  }
}

Also verify snap-income-limits-2026.json and snap-allotments-2026.json match the PAMMS table. If they already contain FY2026 values, no change needed.

Step 3: Add snap-budgeting-factors.json

File: rulesets/federal/snap-budgeting-factors.json (NEW)

This file contains federally mandated budgeting constants from 7 CFR 273.10 and PAMMS 3605/3610:

{
  "_comment": "SNAP budgeting constants per 7 CFR 273.10 and PAMMS 3605/3610",
  "_source": "7 CFR 273.10, FNS Handbook 501",
  "income_conversion_factors": {
    "_comment": "Multiply income by factor to convert to monthly (7 CFR 273.10(c)(2))",
    "weekly": 4.3333,
    "biweekly": 2.1666,
    "semi_monthly": 2.0,
    "monthly": 1.0
  },
  "benefit_computation": {
    "_comment": "Net income multiplied by this percent to get AU contribution (7 CFR 273.10(e)(2)(ii))",
    "net_income_percent": 30
  },
  "self_employment": {
    "_comment": "Optional standard deduction for cost of doing business (7 CFR 273.11(a)(2))",
    "standard_deduction_pct": 40,
    "farm_gross_minimum_for_loss_offset": 1000
  },
  "proration_factors": {
    "_comment": "Day-of-month factor for initial month benefit proration. Factor = (days remaining including application day) / total days in a 30-day month. PAMMS 3810.",
    "1": 1.0000, "2": 0.9667, "3": 0.9334, "4": 0.9000, "5": 0.8667,
    "6": 0.8334, "7": 0.8000, "8": 0.7667, "9": 0.7334, "10": 0.7000,
    "11": 0.6667, "12": 0.6334, "13": 0.6000, "14": 0.5667, "15": 0.5334,
    "16": 0.5000, "17": 0.4667, "18": 0.4334, "19": 0.4000, "20": 0.3667,
    "21": 0.3334, "22": 0.3000, "23": 0.2667, "24": 0.2334, "25": 0.2000,
    "26": 0.1667, "27": 0.1334, "28": 0.1000, "29": 0.0667, "30": 0.0334,
    "31": 0.0334
  },
  "ebt_issuance_schedule": {
    "_comment": "Georgia EBT staggered issuance dates by last 2 digits of client ID (PAMMS 3810). This is a state option, not federal, but stored here for reference.",
    "00_09": 5, "10_19": 7, "20_29": 9, "30_39": 11, "40_49": 13,
    "50_59": 15, "60_69": 17, "70_79": 19, "80_89": 21, "90_99": 23
  },
  "minimum_verification": {
    "_comment": "Minimum pay stubs/records required for income verification (PAMMS 3605)",
    "weekly_biweekly_semimonthly": "1 month or 4 consecutive weeks",
    "monthly": "2 months",
    "irregular": "3 months"
  }
}
NOTE
The ebt_issuance_schedule is Georgia-specific but included in the federal file because the proration factors interact with issuance dates. If a future jurisdiction uses different stagger dates, move to jurisdiction.toml.

Step 4: Create rulesets/federal/citations.toml

File: rulesets/federal/citations.toml (NEW)

[meta]
jurisdiction = "federal"
schema_version = 1
last_full_audit = "2026-04-07"
audited_by = "pamms_audit"

[citations."snap-deductions-2026"]
authority = "fns_memo"
source_ref = "FNS SNAP COLA Memo FY2026"
effective_date = "2025-10-01"
federal_citation = "7 CFR 273.9(d)"
verified_date = "2026-04-07"
notes = "Verified against PAMMS Appendix A (MT-84)"

[citations."snap-income-limits-2026"]
authority = "fns_memo"
source_ref = "FNS SNAP COLA Memo FY2026"
effective_date = "2025-10-01"
federal_citation = "7 CFR 273.10"
verified_date = "2026-04-07"
notes = "Verified against PAMMS Appendix A (MT-84)"

[citations."snap-allotments-2026"]
authority = "fns_memo"
source_ref = "FNS Thrifty Food Plan Adjustment FY2026"
effective_date = "2025-10-01"
federal_citation = "7 CFR 273.10(e)(2)(ii)"
verified_date = "2026-04-07"

[citations."snap-budgeting-factors"]
authority = "federal_register"
source_ref = "7 CFR 273.10, FNS Handbook 501"
effective_date = "2002-03-01"
federal_citation = "7 CFR 273.10(c)(2), 7 CFR 273.10(e)(2)(ii)"
verified_date = "2026-04-07"
notes = "Conversion factors and proration table are long-standing federal constants"

[citations."fpl-2026"]
authority = "federal_register"
source_ref = "HHS Poverty Guidelines 2026"
effective_date = "2026-01-01"
federal_citation = "42 USC 9902(2)"
verified_date = "2026-04-07"

[citations."snap-alien-eligibility"]
authority = "federal_register"
source_ref = "7 CFR 273.4"
effective_date = "2025-07-04"
federal_citation = "7 CFR 273.4, OBBBA 2025"
verified_date = "2026-04-07"
notes = "Updated for OBBBA effective 7/4/2025"

Step 5: Update params.rs If Loading Changed

If the new snap-budgeting-factors.json file introduces fields that canopy-snap/src/params.rs needs to load, add the loading logic. Specifically:

  • income_conversion_factors — needed by the budgeting cascade for converting pay frequency to monthly

  • proration_factors — needed by benefit issuance for initial month proration

  • self_employment.standard_deduction_pct — needed by determine.rs when self-employment income is present

The SnapParameterTable struct in params.rs may need new fields. Follow the existing pattern: load JSON at startup, parse into struct, inject as Arc<SnapParameterTable> Extension.

Step 6: Verify

  1. cargo xtask policy audit --jurisdiction federal should report zero missing citations

  2. cargo check --package canopy-snap compiles with any params.rs changes

  3. All existing tests pass (cargo xtask test --unit)

  4. Values in the JSON files match PAMMS Appendix A exactly

PAMMS Source References

  • Income limits: dfcs-snap/modules/snap/pages/appendix-a-food-stamp-income-limits.adoc

  • Standard deductions: dfcs-snap/modules/snap/pages/3613.adoc

  • Shelter deductions: dfcs-snap/modules/snap/pages/3617.adoc

  • Homeless deduction: dfcs-snap/modules/snap/pages/3618.adoc

  • Budgeting methodology: dfcs-snap/modules/snap/pages/3610.adoc

  • Prospective budgeting/conversion: dfcs-snap/modules/snap/pages/3605.adoc

  • Proration/issuance: dfcs-snap/modules/snap/pages/3810.adoc

  • Resources/assets: dfcs-snap/modules/snap/pages/3405.adoc

Edit this page · default