Follow-up to #278 with a refined mechanism and a larger column list, proven by reading the release H5 directly (populace-us-2024-sparse-l0-refit-57k-71a0887-national-only-20260701, 338MB, person 166,302 × 222 cols / tax_unit 79,736 × 13 cols).
Mechanism refinement vs #278
These bases are not present-but-zeroed — they were never persisted as H5 keys at all, so the engine falls back to each variable's default (0) at runtime. That's a build/persistence-scope mechanism, distinct from a zeroing bug, and it's invisible to any weights-side gate: only a column-manifest check catches it.
Columns proven ABSENT-FROM-H5 (beyond #278's list)
| base |
downstream validation row(s) scoring ~$0 |
tip_income (all *tip*) |
OBBBA no-tax-on-tips (JCT FY2027 −$7.7B) |
| all overtime/FSLA variables |
OBBBA no-tax-on-overtime (−$25.7B) |
auto_loan_interest, auto_loan_balance |
OBBBA auto-loan-interest deduction (−$8.1B) |
qualified_tuition_expenses + all education-credit inputs |
SOI education credits (actual $7.55B) |
ALL retirement-contribution columns (roth_ira_contributions, 401k/403b/457/elective deferrals — #278 listed only traditional_ira_contributions) |
SOI saver's credit (actual $2.04B) |
casualty_loss |
OBBBA casualty-loss line ($0.13B) |
misc itemized inputs (unreimbursed_business_employee_expenses, tax_preparation_fees, …) |
OBBBA misc-itemized termination ($23.7B) |
childcare (tax_unit_childcare_expenses, care_expenses) — confirms #278 |
CDCC rows (Treasury $3.69B; SOI $3.47B; OBBBA CDCC; IA HF1020 fiscal note) |
Notable: the childcare signal exists in the file as raw CPS SPM_CHILDCAREXPNS ($242.8B weighted, 11.0% nonzero) — the survey data is there; it just never reaches a PolicyEngine input.
Degraded (present but short)
| base |
this release |
reference |
charitable_cash_donations |
$230.7B |
dense ~$345B; #278 recorded $264B — worth updating |
student_loan_interest |
$10.4B |
SOI deduction base ~$13-14B |
self_employment_income_before_lsr |
$419.6B |
SOI nonfarm sole-prop ≈ $480-500B → explains the SOI SE-tax backtest running −14% ($69.5B vs $81.1B) |
Healthy for the record: medical component inputs are all populated (premiums $339.6B + Part B $120.7B + other $283.6B + OTC $63.8B) — the medical JCT-target miss is #298's yield mechanism, not a base problem.
Suggested action
Same as #278's gate proposal, but keyed on the column manifest: fail release (or require explicit waiver) when a PolicyEngine input variable consumed by any validation-suite reform/backtest is absent from the persisted H5. The reform-validation suite now exercises exactly these bases, so the missing-column → $0-score path is mechanically detectable at build time.
Found during the 2026-07-06 external-benchmark audit (all 94 dashboard benchmarks verified against primary sources).
🤖 Generated with Claude Code
Follow-up to #278 with a refined mechanism and a larger column list, proven by reading the release H5 directly (
populace-us-2024-sparse-l0-refit-57k-71a0887-national-only-20260701, 338MB, person 166,302 × 222 cols / tax_unit 79,736 × 13 cols).Mechanism refinement vs #278
These bases are not present-but-zeroed — they were never persisted as H5 keys at all, so the engine falls back to each variable's default (0) at runtime. That's a build/persistence-scope mechanism, distinct from a zeroing bug, and it's invisible to any weights-side gate: only a column-manifest check catches it.
Columns proven ABSENT-FROM-H5 (beyond #278's list)
tip_income(all*tip*)auto_loan_interest,auto_loan_balancequalified_tuition_expenses+ all education-credit inputsroth_ira_contributions, 401k/403b/457/elective deferrals — #278 listed onlytraditional_ira_contributions)casualty_lossunreimbursed_business_employee_expenses,tax_preparation_fees, …)tax_unit_childcare_expenses,care_expenses) — confirms #278Notable: the childcare signal exists in the file as raw CPS
SPM_CHILDCAREXPNS($242.8B weighted, 11.0% nonzero) — the survey data is there; it just never reaches a PolicyEngine input.Degraded (present but short)
charitable_cash_donationsstudent_loan_interestself_employment_income_before_lsrHealthy for the record: medical component inputs are all populated (premiums $339.6B + Part B $120.7B + other $283.6B + OTC $63.8B) — the medical JCT-target miss is #298's yield mechanism, not a base problem.
Suggested action
Same as #278's gate proposal, but keyed on the column manifest: fail release (or require explicit waiver) when a PolicyEngine input variable consumed by any validation-suite reform/backtest is absent from the persisted H5. The reform-validation suite now exercises exactly these bases, so the missing-column → $0-score path is mechanically detectable at build time.
Found during the 2026-07-06 external-benchmark audit (all 94 dashboard benchmarks verified against primary sources).
🤖 Generated with Claude Code