PolicyEngine / PolicyEngine/microcosm
ALD-stack repeal scores −53% of JCX line-sum on Build P: #519 targets bind but per-component bases under-mass
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 0
- Forks
- 4
- Avg merge
- 1d 3h
- Merged PRs (30d)
- 94
Description
Follow-up to #519 (target additions) and #535 (per-component repeal-revenue validation surface). Surfaced on the RCC dashboard's Build P validation refresh: https://github.com/PolicyEngine/refundable-credit-conversion/pull/72
Observation (Build P, TY2026)
The RCC ald toggle repeals every above-the-line deduction except alimony (drops all entries from gov.irs.ald.deductions except alimony_expense). Modal endpoint on policyengine 5.0.1 bundling populace-us-2024-buildp-sparse-rmloss100-cae8640-20260728T011454Z scores:
| ALD-stack repeal (TY2026) | PE Build P | JCX-45-25 line-sum (indicative) | gap |
|---|---|---|---|
| federal tax revenue impact | $54.4B | $116.0B | −53% |
Per the caveat already in scripts/scoring_validation/build_comparison.py and #298, the JCX line-sum is non-additive and should not be summed as a hard benchmark — but the gap direction is consistent with per-component under-scoring against each individual JCT line: #519's target additions all bind on Build P but sit under-fit (base-builder mass thin, not target-side).
Per-component fit on Build P
calibration_diagnostics.json at cae8640:
| ALD component | #519 target | notes |
|---|---|---|
| SE-health insurance | bound, under-fit | health_insurance_premiums $16.5B on 1,402 records ≈ 55% of SOI Table 1.4 |
| HSA | bound, under-fit | single target, 74% off |
| Traditional IRA | bound, under-fit | contribution columns thin on sparse |
| SE pension (Keogh/SEP) | bound, under-fit | biggest uncertain component per build_comparison.py caveat (~$30B est) |
| Student loan interest | bound, under-fit | single target, 49% off |
| Alimony | (excluded from RCC repeal toggle) | — |
Base-side context: retirement-contribution columns are enumerated as absent-from-H5 in #340 and #361; SE-health upstream flagged in #38.
Reproducer
reform = {
"gov.irs.ald.deductions": {"2026-01-01.2100-12-31": ["alimony_expense"]},
}
# expected: ~$116B (JCX line-sum, non-additive caveat)
# observed on Build P (Modal endpoint, PE 5.0.1): $54.4B
Ask
Two options, non-exclusive:
- Extend #535's
repeal_revenue_benchmarks.jsonwith per-ALD-component rows so the yield gap is visible per component (matches how QBI / itemized components are handled via #535's per-component surface). - Base-builder pass on the six ALD components — the #519 targets bind, so the under-fit is a base-mass ask, not a target-shape ask. Related base issues: #38 (SE-health upstream path), #340 (retirement-contribution columns absent from H5), #530 (raw-PUF pin that also touches SE income).
Refs
- RCC validation surface refresh: refundable-credit-conversion#72
- Target additions: #519
- Per-component validation mechanism: #535
- Related base issues: #38, #340, #361
- Parallel per-component gap already tracked: #298 (QBI)
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with scripts/scoring_validation/build_comparison.py, #535's repeal_revenue_benchmarks.json, and calibration_diagnostics.json from cae8640. Reproduce the Build P ALD result and compare each component with its listed target, then clarify whether the intended deliverable is per-component benchmark rows, base-builder work, or both. Done means the selected components' under-fit is surfaced or addressed with validation evidence.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- data
- Issue type
- Bug
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 42/100