On the default --target-surface full (tools/build_us_fiscal_refresh_release.py), three congressional-district-file (CD-file, 22incd.csv) target families sum past the national target of the same model quantity. Two more CD measures read the wrong IRS column. Build P shipped on national_state, so it is unaffected; every full build on the pinned feed (consumer_facts_us_c5e5bf8) carries these.
Numbers below come from a release-equivalent compile of the pinned feed (target period 2024, aging on, packaged CD crosswalk, Medicaid substitution) on top of #1036.
1. Capital gains: a concept mismatch
net_capital_gains_{returns,amount} compile onto capital_gains_gross. That is the positive part of PE-US capital_gains (Schedule D), whose IRS counterpart is Table 1.4 col 37/38 (#1035).
The CD file's N01000/A01000 is a different concept: Form 1040 line 7, "net capital gain (less loss)" per 22incddocguide.docx. It counts gain returns, loss-limited loss returns and distributions-only returns alike.
#1036 made the Historic Table 2 (HT2) rows shares of the Table 1.4 control. It deliberately left the 976 CD-file rows as line-7 levels:
Family on full |
CD US row |
CD states (51) |
CD districts (436) |
National Table 1.4 target |
Ratio |
| Returns |
29,845,710 |
29,845,710 |
29,845,710 |
12,392,020 |
2.41x |
| Amount (aged to 2024) |
$1,522.19B |
$1,522.19B |
$1,522.19B |
$1,270.86B |
1.198x |
The model has no Schedule D loss returns in the released data, so it cannot represent the N01000 population at any level.
2. SALT: the CD package reads the wrong column
Chronicle's congressional_district_2022 package reads limited_state_local_taxes_{returns,amount} from N18425/A18425. The doc guide defines those as "State and local income taxes" (Schedule A line 5a, before the $10,000 limit). HT2 reads N18460/A18460, "Limited state and local taxes" (line 5e), which is what salt_deduction measures.
- TY2022 US values: A18425 = $250.4B, against $121.2B for A18460 in the same file.
- On
full, the CD SALT amount rows sum to 1.98x the national HT2 target.
3. Premium tax credit: the CD package reads additional Medicare tax
The same package reads premium_tax_credit_{returns,amount} from N85530/A85530. The doc guide defines those as "Additional Medicare tax" (Form 8959 line 24). HT2 reads N85770/A85770, total premium tax credit.
- The amount is already dropped, by a hard-coded CD check in
fiscal_targets.py.
- The 488 CD returns specs still compile as
assigned_aca_ptc recipients. The US row is 6,848,330, against 7,713,000 for N85770 in the same file.
These are the only CD measures whose column differs from their HT2 twin's; I compared all 56 CD package measures.
Fix (PR to follow, stacked on #1036)
- CD-file capital-gains rows become shares of their own US row times the Table 1.4 control, like the HT2 rows. The CD US row retires, and CD children keep scaling to their CD state parent.
- The four mislabeled columns go to a reviewed, receipted source-column exclusion keyed by (measure id, IRS column). A package corrected to read N18460/N85770 then passes untouched.
- A pinned-feed invariant is added: no CD-file family sums past its national target on
full.
Changing published full-surface targets needs a ruling before merge.
On the default
--target-surface full(tools/build_us_fiscal_refresh_release.py), three congressional-district-file (CD-file,22incd.csv) target families sum past the national target of the same model quantity. Two more CD measures read the wrong IRS column. Build P shipped onnational_state, so it is unaffected; everyfullbuild on the pinned feed (consumer_facts_us_c5e5bf8) carries these.Numbers below come from a release-equivalent compile of the pinned feed (target period 2024, aging on, packaged CD crosswalk, Medicaid substitution) on top of #1036.
1. Capital gains: a concept mismatch
net_capital_gains_{returns,amount}compile ontocapital_gains_gross. That is the positive part of PE-UScapital_gains(Schedule D), whose IRS counterpart is Table 1.4 col 37/38 (#1035).The CD file's N01000/A01000 is a different concept: Form 1040 line 7, "net capital gain (less loss)" per
22incddocguide.docx. It counts gain returns, loss-limited loss returns and distributions-only returns alike.#1036 made the Historic Table 2 (HT2) rows shares of the Table 1.4 control. It deliberately left the 976 CD-file rows as line-7 levels:
fullThe model has no Schedule D loss returns in the released data, so it cannot represent the N01000 population at any level.
2. SALT: the CD package reads the wrong column
Chronicle's
congressional_district_2022package readslimited_state_local_taxes_{returns,amount}from N18425/A18425. The doc guide defines those as "State and local income taxes" (Schedule A line 5a, before the $10,000 limit). HT2 reads N18460/A18460, "Limited state and local taxes" (line 5e), which is whatsalt_deductionmeasures.full, the CD SALT amount rows sum to 1.98x the national HT2 target.3. Premium tax credit: the CD package reads additional Medicare tax
The same package reads
premium_tax_credit_{returns,amount}from N85530/A85530. The doc guide defines those as "Additional Medicare tax" (Form 8959 line 24). HT2 reads N85770/A85770, total premium tax credit.fiscal_targets.py.assigned_aca_ptcrecipients. The US row is 6,848,330, against 7,713,000 for N85770 in the same file.These are the only CD measures whose column differs from their HT2 twin's; I compared all 56 CD package measures.
Fix (PR to follow, stacked on #1036)
full.Changing published
full-surface targets needs a ruling before merge.