Repository navigation
Conversation
The Budget Lab revised "How potential AI futures would play out in the current tax system" on 2026-10-09 (AI-Fiscal v1.0.1). Its erratum moves the 2030 labor shares to the Economists column of Karger et al. Table 39: Moderate 53.8% -> 54.0%, Rapid 51.3% -> 52.0%. Slow is unchanged at 55.0%. - SCENARIO_INPUTS takes the revised shares. - CBO_CUMULATIVE_GROWTH_FACTOR is now (1.022)(1.018)^4, the path the report states and AI-Fiscal commits. The recovered 1.0976 reproduced the July Table 1 but puts revised Rapid capital growth at 15.5949%, which rounds to 15.59% rather than the published 15.60%. - BASELINE_LABOR_SHARE (0.555) is unchanged; its comment now cites the source AI-Fiscal's config gives for it. - Tests pin both vintages of Table 1, and a differential test checks g_Y, g_K, g_L and lambda against AI-Fiscal's committed per-cell parameters (both releases, all 18 cells) to 1e-12. Property tests cover the factor accounting identity, the post-shock share, monotonicity in the target share, fixed shares and lambda symmetry. - Checkpoint keys now carry a digest of the scenario inputs. Keyed by label alone, a resumed run would have returned the July Moderate and Rapid cells for the revised inputs, since the revision changed no label. The scenario outputs and site payload are regenerated in a following commit. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
- yale_publishable_2030.xlsx is now AI-Fiscal's v1.0.1 publishable workbook (fetched at 1c25162c9aae; equal cell for cell to run D of their results/erratum_v1.0.1 comparison). The bridge and the paper read the CBO 2030 corporate anchor ($477.3B, was $486.1B) and total revenue from it instead of hard-coding them. - ai_scenarios_v1_0_0_inputs.json is the 2026-09-26 corrected run on the July scenario inputs, byte for byte. The Head Start correction tests and the paper's correction note now measure that correction on it, so the input revision cannot leak into either. - The site payload carries each scenario's survey inputs (annual GDP growth, target labor share), and the scenario panel reads them instead of restating them. - Paper, method notes: revised labor shares, the CBO path and labor share as their sources state them, "nearly twice", revised reference date. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The paper's numbers are generated, but the words around them are not:
test_paper_claims.py states each sign, ordering and size claim the prose
makes ("flips sign", "always positive", "halves", "the first decade") and
checks it against values_generated.tex, plus the one paper value the site
panel restates. test_memo_tables.py checks every table in the hand-written
memo against ai_scenarios.json at the precision it prints, and that the
site's memoContent.js is generated from it. Both pass on the current
outputs; a rerun that falsifies a sentence or a cell now fails CI.
compare_scenario_vintages.py pairs the July-inputs run with the current
one and prints the before/after table.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Keeps the Budget Lab's v1.0.0 workbook as yale_publishable_2030_v1_0_0.xlsx (the bridge's July side, byte for byte the file this repo committed in July) and adds revision_values(): labor shares, growth rates, Rapid revenue, keep-rate, poverty and the bridged headline on both vintages, plus the largest move in the cells the labor-share revision does not touch. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A single simulation of this pipeline reaches a memory footprint near the host's ceiling (the baseline passed 80 GB), and a process does not hand it all back between units, so the first cell after the baseline went past 110 GB. --max-new-units N computes at most N units not already in the checkpoint and exits with status 3 if any remain; relaunching until the status is 0 runs one simulation per process. Numbers are unaffected: every unit is the same computation, resumed through the input-keyed checkpoint. Also: the paper's October revision note (every figure a generated macro), and the states figure only annotates Washington when it is in the top ten. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…erything analysis/outputs/ai_scenarios.json is the full grid (21 units) rerun on the published runtime (policyengine.py 5.0.1, policyengine-us 1.764.6, build p, runtime fingerprint dc91de12d0ddbc57) with the revised labor shares and the stated CBO path, one unit per process. The baseline row is byte-identical to the July-inputs run, every row carries exactly the scenario the module builds today, and cells the labor-share revision does not touch (Slow, the shares-fixed counterfactuals) move by at most $0.04B (tests/test_scenario_vintages.py). Rapid labor income now grows 0.41% instead of falling 0.94%. Headline moves (2030, $B): - Rapid / proportional net revenue +211 -> +272; poverty +0.11pp -> -0.17pp - Rapid / compressive +173 -> +233; Rapid / expansive +252 -> +313 - Moderate / proportional +144 -> +161 - Bridged Rapid / expansive +301 -> +344, against theirs +216 -> +246 - Realization at 0%: -60 -> +26, so there is no longer a breakeven - Excluding retirement distributions: Rapid +106 -> +177 (cut by a third) Regenerated from it with the repo's own code: the site payload (ai_scenarios_website_payload, byte-identical to a regeneration), state exposure (compute_state_exposure.build on the run's checkpointed per-state baseline), paper values, tables, figures and PDF, and the memo copy. Prose that the new numbers falsify is rewritten: the tilt now erodes most of growth's poverty gain rather than reversing it; revenue stays positive at every realized share; excluding retirement cuts Rapid by about a third, not half; the state take nearly doubles; the two tax-base choices span nearly, not more than, the Slow-to-Rapid range; the Budget Lab's ATR band is 21-32%. The paper and memo carry a dated revision note. test_paper_claims.py and test_memo_tables.py hold each of those sentences and every memo table to the outputs. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Three independent reviews (replication and provenance; every claim and number; what the PR missed) found no blockers and every figure correct. This applies their findings. Claims: - The average-tax-rate cross-check is now like for like. Their Rapid band (21-32%) is federal revenue with their wedge over the gross factor income their shock adds ($767B). On that numerator our cells run 30/34/39% against their 21/26/32%: higher in every cell, as the bridge is. Before, our household 30.7% sat against the band of their variants. - The tilt matters about as much as growth for revenue ($304B against $265B) and more for poverty; it no longer "drives" both. - Realization alone sets the $245B span; the retirement-scope case lies inside it. The sign reversal is now under expansion, not compression. - The conclusion's "agree closely ... mostly definitional" now says where the models agree and why they diverge. - Memo: the CBO change alone lowers their wedge 1.8% (the Rapid wedge falls $84B to $74B); 55% of the state take is in five states; the seven zero states "collect nothing"; reconcile_budget_lab.py's role; and consistent triplet order. - Site: the state-tax line names the selected variant (it said "proportional" whatever was selected); the crossover is measured against the current-law baseline, not the proportional case; the panel carries a revision notice linking to the write-up. - "Roughly twice" in July is confirmed against the Wayback Machine's 21 July 2026 copy of the report. Code and provenance: - The v1.0.0 workbook is cited to their tag v1.0.0 (git blob 3090e94), not 74de5986e5ff, whose copy differs in run date and two source notes. - reconcile_budget_lab.py prints their committed capital base ($4.51T) instead of inferring $4.6T from their prose. - Checkpoint digests now cover the year and the shock settings, the baseline is keyed the same way, and a resumed baseline takes this code's description. --max-new-units rejects values below 1. - compare_data_builds.py defaults to the like-for-like pair and warns when scenario inputs or net-income accounting differ. - report_ai_scenarios.py reads the repo's own output, not the main checkout. Tests: - test_generated_files_in_sync.py: the site payload, the state exposure deltas, and the paper's values and tables must regenerate exactly from the run; both Budget Lab workbooks are pinned to AI-Fiscal's git blobs. CI installs openpyxl so the emit check runs there. - test_memo_tables.py pins every quoted memo figure to the paper macros. - test_paper_claims.py covers the matched ATR, the tilt against growth, and the realization span. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A fourth independent review, of the review-fix delta, found no blockers and three claims that named the wrong comparison: - The memo's five-state share (55%) and its ten-state/median line are Rapid / proportional facts; they now say so, instead of reading as the expansive cell the paragraph had just cited. - The intro's first finding compared the tilt at Rapid with growth as forecast, which already carries a tilt; measured at fixed shares, growth adds more. It now states what holds in either order: the tilt takes back much of what growth delivers (47% of the revenue gain kept), and more of the poverty gain (16% kept). - Payroll agrees within $5.1B in the nine as-forecast cells, not "anywhere in the grid". With shares fixed, ours is 1.4 times theirs in Rapid (+$121B against +$84B), and the paper and memo now say so (new PayrollFixedRapid* macros, tested). Nits: "consistent with" for the divergence's causes; the 84% names its basis; the market-income denominator is the same in each variant; the transfer-detail baseline keys carry the year; descriptive metadata is refreshed on resume; their capital base must be a single value; the method notes' relaunch loop propagates a failure, and say where the fingerprint lives. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Hand-off from #51, which fixes the site's method copy. #51 leaves the paper's wording to this PR, since this PR regenerates the paper and its PDF. Three spots on this PR's head (7267996) carry wording #51 corrects on the site:
Merge order: this PR rewrites the Separately, at 1.764.6 (Edited: the first version gave main's line numbers; the TAFDC paragraph came later.) |
The Budget Lab revised Iselin and Nunn, "How potential AI futures would play out in the current tax system", on 9 October 2026 (AI-Fiscal v1.0.1). Our replication pinned the July Table 1, so it no longer matched. This PR moves it to the revised paper, reruns every scenario on the published runtime, and regenerates the site, memo and paper.
What the Budget Lab changed
From the revised report's erratum and AI-Fiscal's v1.0.1 changelog:
Their headline, Rapid / expansive with the corporate wedge, goes from $216.0B (3.3%) to $246.3B (3.7%). The July wording ("roughly twice as large", "$216 billion, a 3.3 percent increase", labor shares "55.0%, 53.8%, or 51.3%", ATR "21% … to 34%") is confirmed against the Wayback Machine's 21 July 2026 copy of the report.
Why ours moved
Only through (1). Same runtime, same data: policyengine.py 5.0.1, policyengine-us 1.764.6, build p, Head Start excluded, runtime fingerprint
dc91de12d0ddbc57. The 2030 baseline row is byte-identical to the July-inputs run.One more input change, of no practical size. The CBO growth factor is now (1.022)(1.018)^4 = 1.0975947, the path the report states and AI-Fiscal commits, in place of a four-decimal 1.0976 recovered from the July table. With 1.0976 the revised Rapid capital growth is 15.5949%, which rounds to 15.59% rather than the published 15.60%. With the exact factor and θ0_L = 0.555, our g_Y, g_K, g_L and λ match AI-Fiscal's committed per-cell parameters to 1e-16 in both releases. Slow and the shares-fixed counterfactuals, which the labor-share change does not touch, move by at most $0.04B.
Before (July inputs) → after (revised inputs), 2030
Findings that changed
Rapid aggregate labor income now grows 0.41% instead of falling 0.94%:
The paper and memo carry a dated revision note, and every sentence these results falsified is rewritten. The /income-shift panel has a revision notice linking to the memo. "The great majority of workers" below the Rapid / expansive crossover ($139,212) still holds: in the build-p input microdata, 85–92% of workers earn below it for any wage growth to 2030 up to 40%.
How it is checked
test_ai_scenarios.pycell_paramsfor all 18 cells in both releases, to 1e-12.test_scenario_vintages.pytest_paper_claims.py: each qualitative sentence in the paper is checked against the generated values ("erodes most", "nearly doubles", "about a third", "positive at every realized share", ...), plus the one paper value the site restates.test_memo_tables.py: every memo table and every quoted memo figure are checked against the run and the paper macros, andmemoContent.jsmust be generated from the memo.test_generated_files_in_sync.py: the site payload, the state exposure deltas, and the paper's values and tables must regenerate exactly from the run. Both Budget Lab workbooks are pinned to AI-Fiscal's git blobs (b4cdf12cv1.0.1,3090e94dtag v1.0.0). CI now installs openpyxl, so the regeneration check runs there.test_head_start_correction_outputs.pyand the paper's September correction note now measure that correction on the July-inputs run (ai_scenarios_v1_0_0_inputs.json), so the revision cannot leak into it.pytest analysis/tests: 259 passed on the 5.0.1 engine environment; 258 passed and 1 skipped (needspolicyengine_us) in the CI environment.vitest: 41 passed.eslint --max-warnings=0: clean. The paper PDF builds with no undefined references; the eight overfull boxes are the same ones as on main.Invariants
realization:1.0equals grid Rapid / proportional exactly, though computed in separate processes.Review
Three independent Opus reviewers (in session; Subfleet had no dispatchable lanes) covered replication and provenance, every claim and number, and what the PR missed. They found no blockers, and every number they recomputed matched. Their findings are applied in dc9b555. A fourth reviewer checked that delta: no blockers, and every recomputed figure correct (including the matched ATR, 21.05/26.17/32.11% theirs and 29.76/34.12/38.74% ours). Its three should-fix items, all about which comparison a sentence names, are applied in 7267996.
Run notes
One simulation of this pipeline peaks at about 80 GB of footprint, and a process does not release it all between units. The September run predates the fleet's memory caps.
--max-new-units 1now runs one unit per process, resuming from the input-keyed checkpoint, underheavy_run.shwith a 110 GB cap. The first process peaked near 81 GB and no later one passed 91 GB; the grid took about an hour.Out of scope
ai-inequality-slidesandai-inequality-populacepredate the July report and quote none of its numbers.policyengine-app-v2does not reference these routes.shiftSweepData.json) is untouched by the revision and still predates the September Head Start correction, as the page says.Files
analysis/outputs/ai_scenarios.json: the rerun.ai_scenarios_v1_0_0_inputs.jsonis the 26 September run, byte for byte.analysis/outputs/yale_publishable_2030.xlsx: AI-Fiscal's v1.0.1 workbook, equal to run D of theirresults/erratum_v1.0.1.yale_publishable_2030_v1_0_0.xlsxis the July one.src/data/aiScenariosData.json: byte-identical toai_scenarios_website_payload()of the run. It now carries each scenario's survey inputs, which the panel reads instead of restating them.src/data/stateExposureData.json:compute_state_exposure.build()on the run's checkpointed per-state baseline. Baselines are unchanged (Oklahoma differs by 3e-11 $B).src/data/memoContent.jscomes frombun run build:memo.axiom: n/a: replication-calibration and output refresh, no policy encoding
🤖 Generated with Claude Code