Skip to content
Fiscal Receipts

Know the boundaries

Coverage

What this site covers and what it does not. Each row gives the coverage this build actually shipped, the specific thing standing in the way, and where the work stands.

Feature by feature

Coverage, blocker and target for each dataset and feature on Fiscal Receipts.
Program pages1,936 of 2,562 program pages carry detail-grade J-book justification; 73 carry cited FY2026 R-1/P-1 workbook figures only, and 553 are history pages for elements the FY2026 workbooks do not list at all.Derived from program_details sidecars holding at least one J-book detail row, over every sidecar this build shipped; the two remainders are the sidecars' own tier field.In the way73 of the remaining pages are rollup lines carrying cited FY2026 R-1/P-1 workbook figures without R-2/P-40 detail. Classified Programs — much the largest single line, and most of the money — genuinely publish no justification, and no ingestion run will ever change that. The rest is a short tail of lines whose money is real and whose justification is not filed as an R-2 or P-40 exhibit of its own. The other 553 are history pages: the FY2026 books carry no line for those elements, so there is no FY2026 justification for them to be missing, and what those pages publish is the cited record from the President's Budget editions that do carry them. No FY2026 justification volume this project holds is still waiting to be read: the Navy procurement books, Virginia and COLUMBIA class submarines and DDG-51 among them, were the last of them and are loaded.TargetNo dated target, because there is no longer an ingestion step to date. What is left is source material the Department does not publish in this form, which is a different thing from work this project has not done — and the distinction is checked on every build against the files actually on disk, in both directions.
President's Budget editions10 editions loaded — PB2017–PB2026. Actuals for fiscal year N are read from the PB(N+2) book, and every column on the decade matrix states its edition.Derived from distinct edition stamps on years_matrix.json's decade columns — the same columns /years/ renders.In the wayEach earlier edition is manual work rather than a rerun: the older books publish consolidated volumes under unstable file naming, so every edition needs its own evidence-keyed volume classification before its lines can be trusted next to the modern ones. Two editions were nearly published with the wrong volumes before that rule existed.TargetNo dated target, and not scheduled — PB2015 and PB2016 are the two editions that would come next. An edition ships only once its volumes are evidence-keyed — never on a filename pattern — so a date could only follow that work.
Research dossiers50 of 1,938 programs have a research dossier.Derived from dossier sidecars over programs.json rows.In the wayDossiers are generated in metered batches under a per-run cost cap, and every claim in one must resolve to a citation before it is first published — a freshly generated dossier with even one unresolvable citation is rejected outright, not published with a caveat. If an upstream data correction later invalidates a citation in an already-published dossier, that individual claim is dropped and the removal is disclosed on the page (#52) rather than pulling the whole dossier. Throughput is bounded by that budget and that gate, not by the availability of source material.TargetNo dated target, and not scheduled — the order is fixed even though the schedule is not: whenever a next batch runs it is taken in order of FY2026 requested dollars, largest lines first.
Program lineage143 of 1,938 programs carry a lineage rail — where the money went when a program element was renumbered, realigned or transferred.Derived from program_details sidecars carrying a non-empty lineage rail, over programs.json rows.In the wayAn edge is asserted only where a justification narrative names the other end explicitly, next to a transfer verb: “realigned to PE 0604818A” is usable, “realigned to another program element” is not, and most renumberings are written the second way. Usually the sentence names one end and the book it appears in supplies the other; where one names both, those two are paired instead. Candidate edges found by maturation patterns are shown dashed and are never cited.TargetNo dated target, and not scheduled — the pass over clauses that already name a program element has run; what is left are clauses naming only a system or an effort, which need a different matcher and their own precision study. Anything such a matcher found would stay in the candidate tier until a quotable sentence names the other end.
Follow-the-dollar312 of 1,938 programs have a follow-the-dollar view.Derived from flow sidecars over programs.json rows.In the wayThe budget→award crosswalk, one row below: a program earns this view only where its awards tie to it by more than an account code, and almost none do.TargetNo dated target — this number moves when the crosswalk moves, which is a methodology limit rather than a queue.
Budget→award crosswalk461 of 536 crosswalked program elements carry FY2026 request dollars (349 at high confidence) — 59.1% of the FY2026 request is not bridged to an award.Derived from the bridge band of flow_chart.json: crosswalked and universe PE counts, and the unbridged share of the request.In the wayAccount codes are too coarse to attribute awards to program elements. An award record carries a Treasury account and an appropriation; one appropriation account funds dozens to hundreds of program elements, and nothing else on the record narrows it. High means the contract and the program's own J-book pages name the same program; 60 of the 1,106 links published at high were hand-adjudicated, and where a per-award adjudication exists it was challenged by two independent adversarial reviewers. Medium means the evidence stops short of proving this line paid. /methodology/ states which evidence paths carry no per-link adjudication at all. Where evidence pinned an award to a different organization's program, the link was removed — a guess wearing a citation is worse than an honest absence. File C, the last untested official path, was examined and ruled out in September 2026.TargetNo dated target, because this is a methodology limit and not a backlog item. It closes if a source begins publishing the program element on the award record.
Company award linkage32 of 200 profiled companies show at least one award linked to a named budget line.Derived from entity_details sidecars carrying a non-empty awards array, over entities_top.json rows.In the wayThe same crosswalk limit, seen from the company side, plus a naming rule; each profile's obligations total is complete over the award window. A profile lists a budget→award crosswalk link only when the award's recipient name is exactly the family's registered name in the award data. A profile shows none when no member's award is linked to a budget line, or when the links carry a member's own, different name.TargetNo dated target — the crosswalk limit above, counted per company, and the naming rule, which is this site's own.
Award obligations windowFY2017–FY2026 contract and assistance obligations, through 2026-09-04. FY2026 is a partial year.Derived from site_meta.award_fy_range, computed from the award transaction lake at export time.In the wayThe newest fiscal year is always incomplete: USAspending publishes on a rolling basis and the federal year does not close until 30 September. Years before the window's start sit outside the transaction archive we ingest.TargetNo dated target, and none would mean anything here: this window is refreshed on every ingestion run rather than on a schedule.
Congressional districts191 of 435 congressional districts have linked defense dollars.Derived from districts/index.json rows over the 435 seats of the House.In the wayA district appears only where an award's place of performance resolves to a numbered district. A large share of defense obligations is recorded against statewide or undistricted codes (00, 90, 98, 99), and those cannot be split across a state's seats without inventing a distribution nobody could check.TargetNo dated target, and not scheduled — the planned fix is scoped: publish the statewide residual as its own row per state, so the dollars that cannot be districted are visible instead of missing.
State spendingCalifornia only, FY2025 only.Derived from the scope of the fct_state_per_capita dataset shipped on /data/.In the wayCA Open Fi$Cal publishes on a lag and restates prior years in place, so each earlier year needs its own reconciliation against the restated totals before it can sit beside a federal figure. Every other state is a separate portal with its own schema — there is no shared source.TargetNo dated target, and not scheduled — California FY2023 and FY2024 are the planned next step. No second state is queued behind them, and none will be announced before its portal is ingested.
Syndication feeds1,730 items across 4 event types, plus 386 program and 48 company watch feeds.Derived from feed.json's cards, and the RSS files under public/feeds/ that this build wrote.In the wayA watch feed is written only where the program or company actually has events; the rest would be permanently empty subscriptions advertised as live ones. So feed coverage is event coverage, and a new event type cannot ship until its threshold is published and gated.TargetNo dated target, and not scheduled — two further event types are planned, protest outcomes and GAO high-risk transitions, each with its threshold published before its first card.
Lobbying filings5,393 Senate LDA filings indexed, with program mentions extracted.Derived from filings_index.json's total.In the wayFilings are matched to programs by name and alias, and LDA activity descriptions usually name a platform or a service rather than a budget line. A mention is published only where a tracked alias matches; a description naming only “the Navy” produces none, which is the honest result rather than a miss.TargetNo dated target, and not scheduled — extending alias coverage across the whole detail-grade corpus is planned, with each new alias recorded in the alias table rather than inferred at match time.

No row on this page carries a dated target, and that is a decision rather than an omission: a site that will not publish a figure it cannot recompute should not publish a schedule it has not committed to. Each row instead names either the planned work, saying plainly that it is not scheduled, or the limit of the sources behind the gap. When a date is agreed it is added here — and a date that slips is moved here, not deleted. Every figure above is recomputed at build time. The wording around them — blockers, targets, the reasons a row carries no date — is written by hand and was last reviewed on .

Every coverage figure is recomputed at build time

Each coverage figure is read from the data files this build shipped, the same files the pages render from. A build-time gate recomputes all 12 rows independently and fails the build if any rendered figure disagrees with its source. A coverage page carrying a stale literal would refute its own argument, so this one is not allowed to carry any.

One figure is deliberately absent for the same reason: the share of award dollars whose recipient resolves to a corporate family. That is a warehouse query rather than a shipped file, so it cannot be recomputed at build time.

How the corpus is counted

Five nested questions; the differences are the point.

  • 2,575 on sitemap.xml. Indexable /program/ URLs — every page below, plus a stub per budget-line key two programs share.
  • 2,562 on the corpus line. Browsable program pages, all tiers: elements the FY2026 workbooks list, plus elements only earlier editions list.
  • 1,938 on Programs, Years, home. Rows of the FY2026 index — element × appropriation account in PB2026. An older-edition-only page is not a row.
  • 1,936 on dim_programs, on Data. Detail-grade elements, plus a synthetic row per shared-key account with no exhibit behind it.
  • 1,936 on the corpus line, and the row above. Pages carrying R-2/P-40 project detail. The rest carry cited R-1/P-1 rollup figures only.

The budget→award crosswalk is a methodology limit, not a backlog item

This is the site's largest gap; the crosswalk row of the table above states what is in the way, and why no target is dated.

A published negative result, not a silence: File C nominally names a program activity for each award, but OMB’s own domain list for the DoD RDT&E accounts checked, 097-0400 and 057-3600 (a 64 MB CSV) carries only budget activities and junk codes, never program elements, so program-element grain is impossible by construction. In a 2026-09-01 sample of 44 of this site's then-published links (19 high / 25 medium), 81% of absolute obligated flow sat under junk or absent labels, and it contradicts ground truth on awards verified independently. It cannot join, corroborate, or veto.

So the honest boundary is this: we assert a budget→award link only where the record supports one, and we publish the size of the remainder rather than leaving it to be inferred from an empty chart. The bridge states that remainder as a share of the request; in this build: 461 of 536 crosswalked program elements carry FY2026 request dollars (349 at high confidence) — 59.1% of the FY2026 request is not bridged to an award.

“Crosswalked” is published with two denominators, and they are not nested — so each is stated with what one unit of it is:

  • 536 on the /flow/ bridge, and Coverage. Program elements with a published budget→award link, at any tier.
  • 461 on the /flow/ bridge band. Of those, the ones also carrying FY2026 request dollars.
  • 349 on the /flow/ bridge note. Of the bridged, the ones with a high-confidence link.
  • 312 on Districts, Coverage, and program pages. Elements with a high-confidence award obligated at a recorded place of performance.
  • 51 on this list. Of those, the ones with no FY2026 request dollars — why the two ratios differ.

Where coverage is stated elsewhere

Every one of these gaps is also disclosed where a reader meets it: on the page, beside the figure, with a link to the reasoning. This page collects them so the shape of the whole is visible at once. For the definitions behind the numbers — confidence tiers, the supersede policy, and the named limitations — see the methodology. For the datasets themselves, with row counts read from the shipped parquet files, see the data explorer.