What 805,875 Federal Sentencing Records Show About Charge Stacking and Race, FY2014-2025
Federal prosecutors don’t just charge offenses. They apply packages, and the package is patterned by race.
We built a formal ontology and disparity pipeline over twelve years of federal sentencing records to answer one question: when a defendant is convicted, are the additional charges bundled onto the primary offense patterned by race, above and beyond what offense severity, criminal history, and district composition would predict? The answer is yes. The pattern lives in the structure of prosecutorial packaging, not in sentence length, and it survives every conventional control.
events analyzed
detected, bootstrap 1.000
gun/RICO regime, after primary conditioning
SHACL-conforming with provenance
Federal charge stacking clusters into two coherent regimes. Race predicts which one you land in.
A defendant convicted in federal court almost never faces exactly one charge. The average case in our corpus carries two, and many carry four or more. The specific pattern of what gets stacked with what is not random: it clusters. Applying Louvain community detection to a graph of offense-pair co-occurrences residualized against guideline severity, we find two stable regimes that survive bootstrap resampling at a co-membership stability of 1.000.
Which regime a defendant ends up in is strongly race-patterned, even holding offense severity, criminal history, mandatory-minimum applicability, and 94 federal district fixed effects constant. The unconditional odds ratios are striking: Black defendants are 2.45 times more likely than White defendants to land in the gun/RICO regime, and 59% less likely to land in the white-collar regime. Hispanic defendants show the same pattern with only slightly smaller magnitudes.
The predictable objection is that this is just primary-offense composition. Black defendants face firearms charges as their primary offense at higher rates for reasons upstream of prosecutorial charging decisions, and being in the FIREARM+RACKET regime partly restates that. So we tested it directly.
The obvious explanation, that race predicts primary offense, is partial and not complete.
We ran the same regime-membership regression twice: once without primary offense as a covariate, once with it added. If the race coefficient collapses toward 1.0 after conditioning on primary offense, the disparity is entirely a primary-offense- selection story (well documented in the existing literature). If it stays elevated, part of the disparity is stacking behavior, meaning that the specific additional charges bundled onto a defendant’s primary offense are themselves race- patterned. The result is the second case, for both regimes, in opposite directions.
Every row survives conditioning at p<0.001. Roughly half the raw Black-vs-White regime disparity in the gun/RICO cluster is primary-offense composition; the other half is stacking behavior operating on defendants with the same primary charge, the same offense level, the same criminal history, in the same federal district. The white-collar regime shows the mirror-image pattern: Black and Hispanic defendants convicted of the same primary financial offense get the full DOJ elaborate-case bundle applied less often.
The bundle is applied differently across race even when the underlying offense is the same. That is not a claim about intent. It is a claim about what the observed structure cannot be reduced to, and severity plus district plus primary offense are the standard reductions.
| Alternative we tested | Result | What the data showed |
|---|---|---|
| Race disparity is fully explained by guideline severity | NOT SUPPORTED | Effects hold with final offense level + criminal history + mand-min as covariates |
| Race disparity is fully explained by district composition | NOT SUPPORTED | Effects hold with all 94 federal district fixed effects |
| Race disparity is fully explained by primary-offense selection | NOT SUPPORTED | Coefficients drop but remain highly significant after adding primary offense |
| The two regimes are Louvain artifacts, not stable structure | NOT SUPPORTED | Bootstrap co-membership stability: 1.000 across 200 resamples |
| The findings are a small-n artifact at demographic subgroups | NOT SUPPORTED | Gun/RICO regime n = 84,913 events; white-collar regime n = 225,410 events |
| The regime disparities disappear at conventional p thresholds | CONFIRMED (finding holds) | All 26 significant demographic coefficients hold at p<0.001 |
Standard co-occurrence pipelines would have silently missed most of this.
There is a specific failure mode built into the way most researchers approach co-occurrence-then-disparity analyses on administrative corpora, and it is severe enough that we have encoded a structural safeguard against it into the ontology itself. The intuition: if you filter offense pairs at the population level (by effect size or significance) before testing whether the co-occurrence is demographically patterned, you systematically eliminate exactly the pairs where a demographic disparity is strongest.
Why: demographic disparity is the case where a strong within-group effect (Black and Hispanic defendants show elevated stacking, say) is diluted by a weak majority- group effect, producing a null-ish population-level odds ratio. Filtering by pop- level OR before the demographic regression filters out precisely those pairs.
The pipeline separates the two candidate types formally. A
RegimeEdgeCandidate is filtered by effect size and significance at the
population level (appropriate for identifying regime backbones). A
DisparityTestCandidate is filtered by joint sample size only
(appropriate for asking whether the pair is worth testing for demographic
patterning). SHACL rejects any DisparityTestCandidate that cites a stage-1 pre-filter
in its covariate set.
In this corpus, the distinction preserves 19 offense pairs that a standard pipeline would have excluded from disparity testing. The strongest ones include structurally important stacking patterns: ADMIN_JUST + CONSPIRACY, DRUG + LAUNDER, FRAUD + CONSPIRACY, FIREARM + VIOLENT, ADMIN_JUST + VIOLENT, CONSPIRACY + LAUNDER, FRAUD + TAX, and OTHER + VIOLENT (all at p < 0.000001). Each is a pair where the pop- level effect is null-ish (roughly at conditional independence given severity and district) but the within-group patterning is strong. A stage-2 disparity test on any of them is legitimate research; a pop-level filter would have prevented it from ever being run.
P(has_both_offenses) ~ severity + district + fiscal_year_decade
and takes the odds ratio of observed vs severity-predicted joint rate. Wald z on
log(OR). At USSC-scale n, p-value alone is trivially significant, so effect-size
filtering (default OR ≥ 1.5) is applied first. Stage 2 fits a demographic logit
on the disparity-candidate set (n_joint ≥ 100 only), with the same severity +
district + primary-offense covariates.
Every claim is SHACL-verified, not just computed.
The core methodological content is that finding a race-patterned disparity in charging structure requires distinguishing between two analytical questions that look identical if you write them out as SQL. Encoding that distinction in ontology, with SHACL enforcement, is the difference between a pipeline that maintains the discipline and one that quietly abandons it under the next round of edits.
- ChargingRegime (empirically derived, not asserted)
-
Not a primitive type we assert. A community of federal offense categories
detected by Louvain on the regression-adjusted co-occurrence graph. Each regime
carries a
regimeStabilityScore(bootstrap co-membership) and aregimeInEpochpointer, so the same offense can hold different memberships across policy shocks. Confirmed at scale: 2 stable regimes across FY2014–2025, bootstrap 1.000. - RegimeEdgeCandidate vs. DisparityTestCandidate
-
Two subclasses of
AnalysisResultfor what the same numerical co-occurrence is used for. RegimeEdgeCandidate: filtered by effect size AND significance at the population level. Appropriate for regime backbones. DisparityTestCandidate: filtered by joint sample size ONLY. SHACL rejects DisparityTestCandidates that cite a stage-1 pre-filter in their covariate set. This is the load-bearing methodological content of the pipeline made structurally enforceable. - CommunityDisparityClaim (with dual-specification provenance)
-
Every demographic-group coefficient from the regime-membership regression is
materialized as its own individual, linked to its
ChargingRegimeviaaboutRegime, and carrying itsspecification(unconditional or conditional_on_primary) as a first-class property. The comparison across specifications is therefore a single SPARQL query, not a hand-authored comparison table. Materialized: 32 claims, 26 significant at p<0.001. - DisparityHypothesis (with required provenance)
-
Every disparity claim must declare its
covariateSet, itsnullModel, and itswasDerivedFromscript pointer. SHACL rejects any AnalysisResult missing any of these before it enters the graph. There is no path through the pipeline that produces an unattributed claim.
A representative query, the one that reproduces the four-row conditioning table in §2, joins regime-membership with per-specification disparity coefficients in one pass. This is the query that cannot be posed against the source CSVs at all, because regime membership is an empirically-derived ontology object, not a column in the data:
What makes this useful is not the query itself (anyone can write a SPARQL query) but the fact that the objects it queries exist as first-class graph individuals with SHACL-required provenance. The pipeline cannot produce a CommunityDisparityClaim that fails to declare its covariate set and null model. That property is what makes the graph a substrate for cumulative research rather than a one-off report.
What the method measures, and what it does not.
- We did not perform causal inference. The pipeline detects that regime membership is race-patterned after standard controls. It does not establish why. Prosecutorial discretion, grand-jury behavior, plea-bargaining dynamics, defense-counsel resources, and pre-charging investigation intensity are all consistent with the observed pattern.
- This is not evidence of intent. A regime is a structural pattern in charging outcomes, not a claim about what any prosecutor believed or decided. The step from “structural pattern conditional on severity plus primary offense” to “intentional selection” is a legal claim, not a statistical one, and this pipeline does not attempt it.
- USSC data reflects conviction, not original charge. Plea bargaining strips substantial charging-level signal before it reaches the sentencing record. Every “charging regime” finding above is shorthand for “regime observable at the conviction layer” and understates the true charging-level structure. The prosecutorial packaging visible in this corpus is what survived negotiation.
- The corpus covers FY2014–2025 only. Adding pre-2014 years would let us test the Booker (2005) and Fair Sentencing Act (2010) boundaries, which are where the largest structural regime shifts likely occurred. First Step Act (2018) is the only major policy shock spanned by the current data.
- Judge identifiers are suppressed in public files from FY2014 forward. The pipeline includes a judge-signature analysis for older years but on this corpus it produces no output. District-year is the finest safe unit of venue analysis here.
- The statute-to-category mapper is a heuristic. It classifies roughly 93% of NWSTAT citations correctly against the top ~50 federal statutes; the remaining ~7% fall through to an OTHER bucket that we exclude from disparity testing where possible. A codebook-driven per-year crosswalk would improve coverage.
A proof of concept for a class of capability.
An administrative record like the USSC datafiles, treated as a flat spreadsheet, tells you what happened. Treated as a formal knowledge graph with SHACL-enforced provenance discipline sitting on top of it, it tells you what the observed structure can and cannot be reduced to. And it tells you in a form that survives being handed to another researcher who was not there when the analysis was done. The USSC case is one worked example where the two-filter distinction matters enough that failing to make it silently hides most of what a disparity analysis would want to find.
The same approach applies to any domain where coded event data exists at scale and is analyzed row-by-row rather than corpus-wide, and where meaningful patterns exist as combinations rather than as single-column values: SEC enforcement actions, CFPB complaints, ICE detention records, EEOC filings, Bureau of Prisons discipline data, state-level court dockets. The bureaucratic apparatus in each of these domains uses standardized codes for the same reason the USSC does, to make cases comparable across the many people who process them. Those codes are the substrate that makes structural analysis possible. The pattern lives in the corpus, not in the case.
What is new here is not any single technique. Regression-adjusted co-occurrence is thirty years old. Louvain community detection is twenty. SHACL is ten. The novelty is the composition: treating regime membership as a first-class ontology object, materializing the two-filter distinction as a shape that rejects violations, and running dual-specification disparity tests that surface what survives primary-offense conditioning. The four-row conditioning table in §2 is the kind of finding that this composition makes visible and that no component of it, taken alone, would surface.