Commit 1d0e2ce
Map pass-through inputs to QBID-bearing PolicyEngine variables (#1051)
* Map pass-through inputs to QBID-bearing PolicyEngine variables
TAXSIM pass-through income sources produced wrong federal tax in the
emulator's PolicyEngine column (Dan Feenberg's 2026-06-30 five-source
comparison): pbusinc yielded zero AGI/tax, and psemp/scorp produced
correct AGI but no qualified business income deduction.
Root cause is in the emulator mapping layer, not policyengine-us. The
emulator initializes every mapped PolicyEngine variable as a dataset
input. pbusinc mapped to qualified_business_income — a COMPUTED variable
derived from self_employment_income et al. via the § 199A income
definition — so holding it as an input pinned it to whatever pbusinc
supplied (0 on all other records), zeroing the non-SSTB QBI component for
psemp and scorp too. scorp additionally mapped to the s_corp_income leaf
rather than partnership_s_corp_income, the variable named in the QBI
income definition.
Fix:
- psemp/ssemp and pbusinc/sbusinc -> self_employment_income (active
participation, SECA, QBID without the SSTB phaseout; per Dan's spec
businc is identical to semp). The mapper sums each spouse's own pair.
- scorp -> partnership_s_corp_income (QBID, no SECA, NIIT-eligible).
- pprofinc/sprofinc -> sstb_self_employment_income (QBID with the
§ 199A(d)(3) applicable-percentage phaseout) — unchanged, already right.
Aligns both the single-household mapper (core/input_mapper.py) and the
Microsimulation runner (runners/policyengine_runner.py), adds sbusinc to
the recognized input columns, and updates the S-corp splitting test to the
new mapping. New tests/test_passthrough_qbid.py reproduces Dan's five-source
table (AGI/taxable/income_tax) and pins the SSTB phaseout behavior.
Fixes #1004
Addresses #384
Addresses #762
Addresses #943
Addresses #1018
Addresses #1003
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* Regenerate dashboard config for the new pass-through mappings
Rerun extract-config so the dashboard's mapping documentation reflects the
QBID fix: pbusinc now shows self_employment_income (was
qualified_business_income) and pprofinc shows a proper
sstb_self_employment_income link. Also correct the self_employment_income
GitHub path (it lives in input/, not household/income/self_employment/) and
add the sstb_self_employment_income path to the link map.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>1 parent 42041b3 commit 1d0e2ce
11 files changed
Lines changed: 435 additions & 30 deletions
File tree
- changelog.d
- dashboard
- public
- scripts
- policyengine_taxsim
- config
- core
- runners
- tests
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
75 | 75 | | |
76 | 76 | | |
77 | 77 | | |
78 | | - | |
| 78 | + | |
79 | 79 | | |
80 | 80 | | |
81 | 81 | | |
82 | 82 | | |
83 | 83 | | |
84 | 84 | | |
85 | | - | |
| 85 | + | |
86 | 86 | | |
87 | 87 | | |
88 | 88 | | |
| |||
149 | 149 | | |
150 | 150 | | |
151 | 151 | | |
152 | | - | |
153 | | - | |
| 152 | + | |
| 153 | + | |
154 | 154 | | |
155 | | - | |
| 155 | + | |
156 | 156 | | |
157 | 157 | | |
158 | 158 | | |
159 | 159 | | |
160 | 160 | | |
161 | 161 | | |
162 | | - | |
| 162 | + | |
163 | 163 | | |
164 | 164 | | |
165 | 165 | | |
| |||
280 | 280 | | |
281 | 281 | | |
282 | 282 | | |
283 | | - | |
| 283 | + | |
284 | 284 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
29 | 29 | | |
30 | 30 | | |
31 | 31 | | |
32 | | - | |
| 32 | + | |
| 33 | + | |
33 | 34 | | |
34 | 35 | | |
35 | 36 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
76 | 76 | | |
77 | 77 | | |
78 | 78 | | |
| 79 | + | |
79 | 80 | | |
80 | 81 | | |
81 | 82 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
796 | 796 | | |
797 | 797 | | |
798 | 798 | | |
| 799 | + | |
| 800 | + | |
| 801 | + | |
| 802 | + | |
| 803 | + | |
| 804 | + | |
| 805 | + | |
| 806 | + | |
| 807 | + | |
| 808 | + | |
799 | 809 | | |
800 | 810 | | |
801 | 811 | | |
802 | | - | |
803 | | - | |
804 | | - | |
805 | 812 | | |
| 813 | + | |
| 814 | + | |
| 815 | + | |
| 816 | + | |
| 817 | + | |
| 818 | + | |
| 819 | + | |
| 820 | + | |
| 821 | + | |
| 822 | + | |
| 823 | + | |
| 824 | + | |
| 825 | + | |
806 | 826 | | |
807 | 827 | | |
808 | 828 | | |
| |||
894 | 914 | | |
895 | 915 | | |
896 | 916 | | |
897 | | - | |
| 917 | + | |
| 918 | + | |
| 919 | + | |
| 920 | + | |
898 | 921 | | |
899 | 922 | | |
900 | 923 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
27 | 27 | | |
28 | 28 | | |
29 | 29 | | |
30 | | - | |
| 30 | + | |
31 | 31 | | |
32 | 32 | | |
33 | 33 | | |
| |||
69 | 69 | | |
70 | 70 | | |
71 | 71 | | |
72 | | - | |
73 | | - | |
74 | | - | |
75 | | - | |
76 | | - | |
77 | | - | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
78 | 90 | | |
79 | 91 | | |
80 | 92 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
189 | 189 | | |
190 | 190 | | |
191 | 191 | | |
192 | | - | |
193 | | - | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
194 | 198 | | |
195 | 199 | | |
196 | 200 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
214 | 214 | | |
215 | 215 | | |
216 | 216 | | |
217 | | - | |
| 217 | + | |
218 | 218 | | |
219 | 219 | | |
220 | 220 | | |
| |||
290 | 290 | | |
291 | 291 | | |
292 | 292 | | |
| 293 | + | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
| 298 | + | |
| 299 | + | |
| 300 | + | |
| 301 | + | |
| 302 | + | |
| 303 | + | |
| 304 | + | |
| 305 | + | |
| 306 | + | |
293 | 307 | | |
294 | 308 | | |
295 | 309 | | |
| |||
383 | 397 | | |
384 | 398 | | |
385 | 399 | | |
| 400 | + | |
| 401 | + | |
| 402 | + | |
| 403 | + | |
| 404 | + | |
| 405 | + | |
| 406 | + | |
| 407 | + | |
| 408 | + | |
| 409 | + | |
| 410 | + | |
| 411 | + | |
| 412 | + | |
| 413 | + | |
| 414 | + | |
386 | 415 | | |
387 | 416 | | |
388 | 417 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
69 | 69 | | |
70 | 70 | | |
71 | 71 | | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
72 | 76 | | |
73 | 77 | | |
74 | 78 | | |
| |||
0 commit comments