Skip to content

CBO cost estimates: stage publication 61367's period-window claims - #178

Merged
PavelMakarchuk merged 1 commit into
mainfrom
cbo-pl119-21-window-claims
Oct 16, 2026
Merged

PavelMakarchuk merged 1 commit into
mainfrom
cbo-pl119-21-window-claims

Conversation

@PavelMakarchuk

Copy link
Copy Markdown
Contributor

Summary

Stages CBO publication 61367 (P.L. 119-21 vs CBO's January 2025 baseline) as period-window claims in lane cbo-cost-estimates. The lane note said these PDFs were "pointers pending period-window staging"; window claims already work for JCT, TPC and PWBM, so this does the staging.

New adapter sources/cbo-pl119-21/ (raw files from Wayback captures; the two PDFs match the harvest manifest hashes):

  • Distribution (61367-data.xlsx, the letter's Figures 1–2 data): 10 deciles × 4 channels + net effect × {2025 dollars per household, percent of baseline income} = 100 claims, annual averages over 2026–2034.
  • SNAP supplement (61367-SNAP.pdf): 15 claims for sections 10102–10105, each read from its verbatim sentence (for example, −2.4 million participants in an average month over 2025–2034; −$41 billion direct spending over 2028–2034).

QC (any failure raises):

  1. Workbook titles, units, headers and decile labels are verbatim.
  2. In each decile, the four channels add to the net effect within rounding.
  3. The letter's quoted deciles (lowest −$1,200 / −3.1%, 5th, 6th, highest +$13,600 / 2.7%) equal the workbook cells.
  4. Section 10102's four groups add to its 2.4 million total.
  5. Every SNAP statement occurs exactly once in the PDF text.

Modelling choices

  • Baseline. CBO published after enactment, so its counterfactual is not the law in force. A new registry entry, cbo_january_2025_baseline, records this. Equivalence with pre_obbba_current_law / pre_obbba_law is not assumed. The harvest's TFP-cap row (2034, $213) moves to this baseline too, so its claim id changes. Nothing referenced the old id.
  • Reforms. The distribution uses obbba_enacted_pl119_21, the same slug as PWBM's enacted-law rows. Each SNAP section is its own world ("as if implemented on its own"): pl119_21_snap_{work_requirements, sua_energy_assistance, internet_expenses, state_matching_funds}.
  • Metrics. Two change siblings are added beside their levels: participant_count_change and average_monthly_benefit_change. The "reduce or eliminate benefits for 300,000 people" statement is an affected_count, not a participant change.
  • Percent rows use value_kind: "percent", so the app shows −3.1%, not −310%.
  • Not staged, with reasons in source.json: 61537 and 61536 (whole-bill deficit totals and a draft Senate text), 61505 and the Arrington–Guthrie letter (House text, not enacted), HSGAC (immigration fees), the letter's whole-population channel totals, and the uninsured workbook.
  • No PE counterparts yet. They need the January-2025 world run over each window. The lane stays computed only through the existing registry row.

Test plan

  • Two builds: same content hash (175dd415…); no drift after the build and the suite
  • pytest tests/ — 1782 passed, 15 skipped (test_modal_uk_event deselected locally: it needs Python 3.12)
  • New tests/test_cbo_pl119_21.py: the extract equals the adapter output; each QC check catches a broken cell, quote or sum; windows, baseline and values are checked
  • ruff format --check; bun test src

🤖 Generated with Claude Code

Publication 61367 (P.L. 119-21 vs CBO's January 2025 baseline) as
window claims, from a new adapter at sources/cbo-pl119-21:

- the distributional letter's figure data (61367-data.xlsx): 10 deciles
  x 4 channels + net effect x dollars and percent of income, annual
  averages over 2026-2034 (100 claims)
- the SNAP supplement's section 10102-10105 statements, each read from
  its verbatim sentence (15 claims)

QC: channels add to the net effect within rounding; the letter's quoted
deciles equal the workbook; section 10102's groups add to its total.

CBO published after enactment, so its counterfactual is registered as
the baseline cbo_january_2025_baseline. The harvest's TFP-cap row moves
to it as well (its claim id changes; nothing referenced it). Two change
metrics are added beside their levels: participant_count_change and
average_monthly_benefit_change. The other OBBBA PDFs (whole-bill deficit
letters, House and draft Senate texts, immigration fees) are set aside
with reasons in source.json.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@vercel

vercel Bot commented Oct 15, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
policyengine-scorecard Ready Ready Preview Oct 15, 2026 6:33pm UTC

Request Review

@PavelMakarchuk
PavelMakarchuk merged commit d892197 into main Oct 16, 2026
9 checks passed

This branch was successfully deployed

1 active deployment
Preview — c06ed2ef Deployed Oct 15, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant