Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

Tax-input coverage gaps surfaced by the reform-validation registry on us-6.2.1 (tracker)

Open
#1,117 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
5/5
Estimated time
Over a week
Newbie friendliness
35/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Active
Tech stack
python

Research direction

Start with the referenced diagnosis memos and the listed entry points: us_runtime/sipp_tips.py, us_runtime/scf_auto_loans.py, us/spec/sources.yaml, us_runtime/puf_aggregate_records.py, and us_runtime/validation_input_coverage.py; related issues include #505, #586, #252, #579, #253, and #958. Compare the identified inputs and registry results with the cited external benchmarks before choosing a gap to investigate. Done means the selected coverage discrepancy is addressed or tracked against its existing issue and validated against the relevant benchmark.

Written by the indexing model from the issue text.

Description

Found by the policyengine-scorecard reform-validation diagnosis (batch 2), PolicyEngine/policyengine-scorecard#146. Memos: diagnosis/batch2/A.md (A2-A4) and diagnosis/batch2/B.md (B1, B2, B5, B6).

This tracker collects input-coverage gaps that the reform-validation registry shows on the certified bundle us-6.2.1 (policyengine-us 2.2.1 + populace-us-2024-spm-20260915). In every case the engine models the provision; the release's inputs cannot reach the benchmark. Each section links the existing issue where one exists and records only what is new. microcosm paths are relative to packages/microcosm-build/src/microcosm/build/ @ 581b569.

Benchmarks used below (extracted)

JCX-35-25 (July 1, 2025), PDF p. 2, Chapter 2, $ millions, FY2025-2034:
"1. No tax on tips (sunset 12/31/28) [5] ... tyba 12/31/24 --- -10,121 -7,664 -8,078 -5,262 -90 -98 -107 -117 -127 -31,664"
"3. No tax on car loan interest ... iia 12/31/24 -1,932 -5,400 -8,070 -9,916 -5,313 --- --- --- --- --- -30,631"

JCX-35-25, PDF p. 4, Chapter 4, Subchapter C:
"4. Permanent and expanded reinstatement of partial deduction for charitable contributions of individuals who do not elect to itemize ... tyba 12/31/25 --- -1,543 -7,791 -8,149 ..."

JCX-48-24, Table 1 "Tax Expenditure Estimates By Budget Function, Fiscal Years 2024 - 2028", Individuals, $ billions, 2024-2028:
(PDF p. 33, Income Security) "Net exclusion of pension contributions and earnings: Plans covering partners and sole proprietors (sometimes referred to as "Keogh plans") ... 16.6 17.1 17.7 20.4 22.5"
(PDF p. 32, Health) "Deduction for health insurance premiums and long-term care insurance premiums by the self-employed ... 8.4 9.3 11.9 13.4 14.0"

IRS SOI Publication 1304, Table 1.4 "All Returns: Sources of Income, Adjustments, and Tax Items, by Size of Adjusted Gross Income, Tax Year 2023 (Filing Year 2024)" (23in14ar.xls), money in thousands of dollars, row "All returns, total":
"Payments to a Keogh plan" (cols 115-116): 946,019 returns; 30,130,848
"Self-employed health insurance deduction" (cols 117-118): 3,595,764 returns; 31,232,604
"Alternative minimum tax" (cols 143-144): 150,167 returns; 2,752,164

IRS SOI Publication 1304, Table 3.3 "All Returns: Tax Liability, Tax Credits, and Tax Payments, by Size of Adjusted Gross Income, Tax Year 2023 (Filing Year 2024)" (23in33ar.xls), row "All returns, total":
"Tax credits > Nonrefundable credits > Nonrefundable education credit" (cols 8-9): 7,211,349 returns; 7,554,668
"Tax credits > Total refundable credits > American opportunity credit" (cols 40-41): 5,821,688 returns; 5,090,364

PE values are calendar-2026 liability changes for OBBBA rows. The FY2027 JCT column is the like-for-like comparator for these provisions (FY2026 is a partial first year; A.md item A1).


- [ ] A2. Tip income: incidence inside tipped occupations is too low (see #505, #586)
  • Registry: PE -$1.93B vs JCT -$7.66B FY2027 (0.25) and -$10.12B FY2026 (0.19).
  • H5 (2024, weighted): tip_income $34.3B on 2.97M recipients. Of 22.97M wage earners with a Treasury-listed occupation code, 1.72M (7.5%) have tips > 0. Waitstaff (Census 2018 occupation 4110, mapped to TTOC 102 in us_runtime/sipp_tips.py:133-184): 1.68M wage earners, 0.124M (7.4%) with tips. Bartenders: 18%.
  • 2026 simulation: tip_income_deduction $16.9B on 1.54M tax units. At PE's revenue per deducted dollar (about 11.4%), JCT's FY2027 value needs about $67B of deductions, about 4x PE's.
  • Mechanism (us_runtime/sipp_tips.py): annual tips are the December monthly SIPP amount x 12 (:3-7, :334); training is capped at 10,000 rows (:114, :419-423), and the code notes that "seed 0 materially under-samples positive tip rows in the 10,000-row cap" (:117-119). The occupation code "is a predictor, not a domain mask" (:25). The plausibility band checks only the all-person share with tips (:127), not incidence inside listed occupations.
  • New relative to #505: #505 attributes the carrier deficit to the December-reference participation concept; the within-occupation incidence above is consistent with that explanation.
  • Proposed: two-stage incidence/amount model conditional on a listed occupation; stratified donor sampling of positives; a gate on within-occupation incidence; the JCX-45-25 deduction line from #586 as a target.
- [ ] A3. Qualified car-loan interest: the proxy uses one year of loan issuance as the stock (see #252, #586, #981)
  • Registry: PE -$1.08B vs JCT -$8.07B FY2027 (0.13) and -$5.40B FY2026 (0.20).
  • #252 says the input "is never imputed". That is stale: us_runtime/scf_auto_loans.py:454-472 now sets qualifying interest = auto_loan_interest x min(1, 6,000,000 / weighted households with positive interest). The docstring (:15-24) calls 6M the number of qualifying loans "issued annually".
  • The statute covers all post-2024 indebtedness, so the eligible stock grows each year:

26 U.S.C. 163(h)(4)(A) and (B)(i) (Cornell LII, current text): "In the case of taxable years beginning after December 31, 2024, and before January 1, 2029, for purposes of this subsection the term “personal interest” shall not include qualified passenger vehicle loan interest." ... "the term “qualified passenger vehicle loan interest” means any interest which is paid or accrued during the taxable year on indebtedness incurred by the taxpayer after December 31, 2024, for the purchase of, and that is secured by a first lien on, an applicable passenger vehicle for personal use."

  • By TY2026 the stock holds about two annual vintages (less payoffs); the proxy holds one, and the engine uprates the input by CPI-U only (policyengine_us/variables/.../qualified_passenger_vehicle_loan_interest.py:20). First-order: a vintage-corrected input moves PE to about -$2.2B (0.27x FY2027). Most of the gap stays open: at PE's revenue per deducted dollar (about 10%), JCT's FY2027 value needs about $80B of deductions, more than all H5 auto-loan interest ($75.6B in 2026).
  • Proposed: a vintage-stock share for the dataset's target year (sum over 2025+ vintages of 6M x survival), and an external household auto-debt benchmark for total auto_loan_interest. Update or close #252.
- [ ] A4. Non-itemizer cash giving: donor incidence is about half of an external benchmark (new)
  • Registry: PE -$3.52B vs JCT -$7.79B FY2027 (0.45).
  • charitable_cash_donations comes from the puf_tax_detail stage, "IRS PUF 2015 (uprated)" (us/spec/sources.yaml:110-111, output list :283); the PUF field mapped to cash contributions is E19800 (us_runtime/puf_aggregate_records.py:115). Hypothesis, not verified against the PUF codebook: the field is observed only for itemizers, which would under-represent non-itemizer donors.
  • H5: 23.9% of households and 19.1% of tax units have cash donations > 0 (25.5% of households give in any form); 4.8% at AGI $0-25K, 7.2% at AGI $25-50K.
  • External benchmark:

Lilly Family School of Philanthropy, news release (October 24, 2024), on its Philanthropy Panel Study (part of the PSID): "The share of Americans who give to charity declined from 50.9% in 2018 to 46.9% in 2020, following the onset of the pandemic."

  • 2026 simulation: 18.3M of 147.5M non-itemizing tax units claim the deduction ($21.6B). At PE's revenue per deducted dollar (about 16%), JCT's FY2027 value needs about 40M claimants at PE's average amount, about 2.2x PE. A capped $1,000/$2,000 deduction scales mainly with donor count.
  • Proposed: impute giving incidence and amount for all households from a source that observes non-itemizers (PSID PPS or CE cash contributions), or add a non-itemizer deduction target once an SOI series is sourced.
- [ ] B1. Self-employed (Keogh/SEP/SIMPLE) pension contributions at about 3% of SOI (see #579)
  • Registry: PE $0.21B vs JCT $16.6B (0.01). Note: JCT's line is a net exclusion of contributions and earnings, so a contribution-only repeal cannot reach it; the data gap is still the main factor.
  • H5: self_employed_pension_contributions_desired $1.373B on 5.38M persons (1,654 records); among holders p50 $276, p99 $1,380, max $1,771. Engine ALD: $1.013B on 5.33M tax units. SOI: $30.13B on 946,019 returns (above), so PE dollars are 3.4% of SOI on 5.6x the claimants. At AGI $200K+, PE $0.23B vs SOI $24.3B.
  • Mechanism (us/spec/sources.yaml:524-530, stage retirement_contributions): "Measured ASEC RETCB_VAL is allocated across self-employed pension, defined-contribution, and IRA pools ... QRF-imputes all five leaves onto the PUF half from the ASEC rows and PUF-imputed income." The PUF half does not carry tax-form Keogh amounts.
  • Proposed: source the PUF half from the PUF Keogh-deduction field (verify the field ID in the codebook), or add SOI Table 1.4 "Payments to a Keogh plan" returns and amount as targets.
- [ ] B2. Self-employed health insurance: right claimant count, half the amount (see #579)
  • Registry: PE $2.38B vs JCT $8.4B (0.28).
  • Engine ALD: $14.84B on 3.688M tax units (mean $4,024). SOI: $31.23B on 3,595,764 returns (mean $8,686). Count ratio 1.03, amount ratio 0.475.
  • By AGI (SOI Table 1.4 col 118): below $200K, PE $12.59B vs SOI $14.51B (0.87); at $200K and above, PE $2.25B vs SOI $16.73B (0.13).
  • Source (us/spec/sources.yaml:2847-2927, attribute_self_employed_health_premiums): the ASEC reported premium is copied onto Schedule-C persons outside ESI and outside a Medicare proxy.
  • Proposed: test the CPS premium under-report, the Medicare-proxy exclusion and tax-unit premium assignment (not verified); add SOI Table 1.4 SEHI returns and amount by AGI as targets.
- [ ] B5. Education credits at 10% of SOI: LLC structurally zero (see #253)
  • Registry: PE $0.78B vs SOI $7.55B nonrefundable education credit (0.10).
  • LLC: is_eligible_for_lifetime_learning_credit.py:29-47 requires attends_eligible_educational_institution_for_lifetime_learning_credit and has_lifetime_learning_credit_1098_t_or_exception (bool inputs, so False when absent). Neither is in the H5, so lifetime_learning_credit = 0.
  • AOTC: qualified_tuition_expenses $4.40B on 1.18M persons (426 records). Nonrefundable AOTC is at most 0.6 x $4.40B = $2.64B even without a liability limit. PE claimant units are about 11% of SOI's 7.2M nonrefundable-credit returns.
  • The coverage gate registers only qualified_tuition_expenses for this row (us_runtime/validation_input_coverage.py:122-126), so the LLC zero passes the gate.
  • Proposed: LLC factual inputs for a non-AOTC student population (graduate, part-time, non-degree); widen tuition to SOI scale; register both LLC flags in US_VALIDATION_PROVISION_INPUT_LEAVES (:106); add SOI Table 3.3 education-credit targets. #253's numbers are from f0af251; update it.
- [ ] B6. AMT from 70 records: top-tail compression (see #958; #254 is stale)
  • Registry: PE $4.39B vs SOI $2.75B (1.60). PE's AMT comes from 70 records; the top 10 hold 87% of AMT dollars.
  • By AGI (PE 2024 filers vs SOI TY2023 Table 1.4 col 1 and cols 143-144): $1M-1.5M PE 94.1K payers / $1.30B vs SOI 16,889 / $0.26B; $1.5M-2M PE 75.0K / $1.35B vs SOI 18,284 / $0.32B; $5M-10M and $10M+ PE 0 vs SOI 6,264 / $0.18B and 4,164 / $0.26B.
  • This is the same tail compression as #958 (too many returns at $1-2M, almost none above $5M), seen through AMT. #254 says AMT is 59% under; on us-6.2.1 it is 1.6x over, and the history moved $1.13B -> $4.39B across releases at a fixed engine for part of the path.
  • Proposed: track under #958; comment on #254 that its sign changed.
Dominant language
Python
Stars
0
Forks
5
Avg merge
1d 18h
Merged PRs (30d)
114

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from PolicyEngine/microcosm

All issues in PolicyEngine/microcosm

Similar issues

More Python issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.