Skip to content

Test the government function bridge, and reject it (#578) - #714

Draft
WesIngwersen wants to merge 1 commit into
step3_benchmark_sut_panelfrom
step3_gov_function_bridge
Draft

Test the government function bridge, and reject it (#578)#714
WesIngwersen wants to merge 1 commit into
step3_benchmark_sut_panelfrom
step3_gov_function_bridge

Conversation

@WesIngwersen

Copy link
Copy Markdown
Member

Stacked on #713.

The plan sequenced S5's government leg behind a go/no-go: does Census
govslocalfin's function × object split bridge to a commodity mix for the
G* columns? It has been run. ❌ No.

The bound that decides it

The bridge means one model — stable within-function input mixes, moving function
weights: s_c(t) = Σ_f w_f(t)·m_{c|f}. Hold m fixed and

d(s(t), s(0)) ≤ ½ Σ_f |Δw_f| = d(w(t), w(0))

because each m_{c|f} sums to 1 over commodities. The function-mix movement is
an exact ceiling on the commodity-mix movement the bridge can deliver
— so the
question is answerable without building the bridge, which is what made gating it
worth doing.

Three measurements

function mix moves, 2017 → 2022 0.0464 — against a 0.201 commodity drift in the same columns
government functions overlap 36% (mean pairwise dissimilarity 0.639 on BEA's own G* columns) → realistic ceiling 0.030, 14.7% of what needs explaining
reweighting BEA's real 3-function split +2.4% (0.1946 → 0.1899)

⚠️ 97.6% of the drift is movement within a function. A finer function list
does not help — BEA's 3-function split moves 0.0453 where govslocalfin's 33
functions move 0.0464, so disaggregating does not move more dollars between them.
For scale, the inflation carry and ORE's built seed both get ~4.5%, which the
plan already calls at the bar rather than over it.

Two defects that would also have sunk it

  • ⚠️ Current Operations by function exists only for 2022-2024 — one
    economy-wide number for 2017-2021. No 2017 anchor at the seed year. The
    137→232 row jump the source note flagged is exactly this.
  • ⚠️ The only continuous function series, Total Expenditure, is a 0.062
    proxy for it — larger than the 0.0385 of movement it would have to transmit.
  • ⚠️ State and local only. Federal is 43.1% of the block's misplaced dollars,
    and S00500 (83,851 $M at 0.383, worst column in the table) is out of reach.

What this does not close

#578 stays open. The G* columns still drift 230-258 $B and the drift is
within-function. This closes govslocalfin as the route to it, not the problem.

Two by-products belong elsewhere and are not claimed here: Salaries and Wages
is Step 2's government V00100, and Capital Outlay by function does run
2017-2024, which makes it the check on the FD government investment columns.

Contents

  • gov_function_bridge.py — the probe, with --reach/--coverage/--movement/--bound and a --check that regresses every documented finding.
  • Plan: new §The government function bridge; S5, the S4 verdict table, the source table and the two-problems table all updated off the result.
  • annual_survey_expense_sources.md — corrects two claims now known wrong: that G* needs a total rather than a mix, and that Current Operations by function runs for every year.

Gates: ruff check . clean, mypy bedrock clean (bar 4 pre-existing Windows-only resource errors), pytest 795 passed.

🤖 Generated with Claude Code

The plan sequenced S5's government leg behind a go/no-go on whether Census
`govslocalfin`'s function x object split bridges to a commodity mix. It has
been run and the answer is no.

The model that premise implies has an exact ceiling: with within-function
mixes held fixed, commodity-mix movement is bounded by the function-mix
movement itself, since each within-function mix sums to 1 over commodities.
So the question is answerable without building the bridge.

- the function mix moves 0.0464 over five years, against a 0.201 commodity
  drift in the same columns;
- government functions overlap by 36% (mean pairwise dissimilarity 0.639 on
  BEA's own government columns), so the realistic ceiling is 0.030;
- realising the bound on BEA's three general state-and-local columns -- a
  real function split with observed weights and observed within-function
  mixes -- buys +2.4%. 97.6% of the drift is *within* function.

A finer function list does not help: BEA's 3-function split moves 0.0453
where govslocalfin's 33 functions move 0.0464.

Two independent defects would also have sunk it. `Current Operations` by
function is published only for 2022-2024, so there is no 2017 anchor at the
seed year -- the 137->232 row jump the source note flagged is exactly this.
And the only continuous function series, `Total Expenditure`, is a 0.062
proxy for it, larger than the 0.0385 of movement it would carry.
`govslocalfin` is also state-and-local only, and federal holds 43.1% of the
block's misplaced dollars including S00500, the worst column in the table.

This closes govslocalfin as the route to the `G*` mix. It does not close
#578: the columns still drift 230-258 $B and the drift is within-function.

Corrects two claims in annual_survey_expense_sources.md that are now known
wrong -- that the `G*` columns need a total rather than a mix, and that
Current Operations by function runs for every year in the span.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@WesIngwersen
WesIngwersen force-pushed the step3_gov_function_bridge branch from 05fc457 to 5fcde96 Compare August 26, 2026 18:31
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