> ## Content Index
> Fetch the complete content index at: https://www.traceoriginresearch.com/llms.txt
> Use this file to discover other available public pages before exploring further.

# What 805,875 Federal Sentencing Records Show About Charge Stacking and Race, FY2014-2025
- URL: https://www.traceoriginresearch.com/what-805-875-federal-sentencing-records-show-about-charge-stacking-and-race-fy2014-2025/
- Published: 2026-08-31T01:42:05.000Z
- Updated: 2026-08-31T01:42:05.000Z
- Author: Eric Brattin
- Tags: United States

USSC charge-graph analysis · August 2026

## Federal prosecutors don’t just charge offenses. They apply *packages*, and the package is patterned by race.

Analysis

E. Brattin  
Trace Origin

Source data

USSC Individual Offender  
Datafiles, FY2014–2025

Method

OWL 2 / RDF / SPARQL / SHACL  
Louvain community detection

Snapshot

805,875 sentencing events  
11-script reproducible pipeline

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. 

DATA SNAPSHOT: 805,875 individual federal sentencing events, FY2014–2025, from the U.S. Sentencing Commission’s public Individual Offender Datafiles. Twelve fiscal years pooled from the source S3 corpus. All figures below refer to this snapshot and are reproducible from the archived pipeline against the same data. 

CASES PER FISCAL YEAR · N = 805,875 TOTAL FY14 15 16 17 18 19 20 21 22 23 24 FY25 POST-A782 EPOCH (2014–2018) POST-FIRSTSTEP EPOCH (2019–2025) 

Fig 1Federal sentencing volume declined roughly 40% across the First Step Act boundary (Dec 2018). This is the corpus the rest of the analysis works from.

805,875

Federal sentencing  
events analyzed

2

Stable charging regimes  
detected, bootstrap 1.000

1.71

Odds ratio, Black defendant,  
gun/RICO regime, after primary conditioning

9,492

Triples in materialized graph,  
SHACL-conforming with provenance

§ 1 · The finding

## 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\. 

DETECTED CHARGING REGIMES · ADJUSTED CO-OCCURRENCE GRAPH FRAUD n=175k LAUNDER n=27k ADMIN\_JUST n=23k Regime 0 WHITE-COLLAR PACKAGE n = 225,410 events OR 2.02 FIREARM n=84k RACKET n=16k Regime 1 GUN-AND-RICO PACKAGE n = 84,913 events Edge width proportional to adjusted co-occurrence odds ratio 

Fig 2The two regimes detected by Louvain community detection on the severity-adjusted co-occurrence graph. Node size reflects offense frequency; edge width reflects joint-presence odds ratio above the conditional-independence baseline. No inter-regime edges pass the effect-size threshold.

Regime 0 · n=225,410 events

The white-collar package

Fraud (wire, mail, bank, healthcare, ID theft), money laundering (18 USC §§1956–57 and 31 USC §5324), and administration-of-justice charges (obstruction, false statements, perjury) co-occur at rates well above what offense severity and district alone predict. This is the DOJ’s standard elaborate-financial-case bundle. 

Cluster: ADMIN\_JUST + FRAUD + LAUNDER

Regime 1 · n=84,913 events

The gun-and-RICO package

Firearms offenses (18 USC Ch 44: §922(g), §924(c)) and racketeering statutes (RICO §§1961–62, Hobbs Act §1951, VICAR §1959) co-occur at 2x the rate a naive baseline predicts. This is the federal gang-prosecution bundle used in ATF and FBI joint prosecutions. 

Cluster: FIREARM + RACKET, OR 2.02

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. 

§ 2 · The falsification

## 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. 

RACE COEFFICIENT MOVEMENT UNDER PRIMARY-OFFENSE CONDITIONING OR = 1.0 (no effect) 3.0 2.0 1.0 0.6 0.4 0.3 UNCONDITIONAL severity + venue only \+ PRIMARY OFFENSE severity + venue + primary 2.45 1.71 Black · gun/RICO 2.21 1.36 Hispanic · gun/RICO 0.41 0.58 Black · white-collar 0.45 0.74 Hispanic · white-collar 

Fig 3All four race coefficients move toward OR = 1.0 after primary-offense conditioning, but none crosses. Roughly half the raw disparity is explained by primary-offense composition; the other half is stacking behavior on defendants with the same primary charge. Every endpoint significant at p<0.001.

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                       |

§ 3 · The methodological hazard

## 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. 

TWO CANDIDATE SETS OVER THE SAME 66 OFFENSE PAIRS DISPARITY-TEST CANDIDATES n\_joint ≥ 100 (all 66 pairs) 47 pairs REGIME EDGE CANDIDATES OR ≥ 1.5 AND p < 0.001 (appropriate for regime backbone) 19 pairs PROTECTED BY TWO-FILTER DISCIPLINE Would be dropped by pop-level filtering, preserved for demographic disparity testing. 

Fig 4The two candidate sets. Regime detection is appropriate only for pairs passing effect-size + significance at population level. Demographic disparity testing needs the broader set. Filtering the latter by the former (the standard pipeline error) silently excludes the 19 pairs where the disparity signal is precisely the thing to be measured.

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. 

MethodStage 1 fits `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. 

§ 4 · The ontology layer

## 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. 

CLASS HIERARCHY · SHACL-ENFORCED DISCIPLINE AnalysisResult prov:Entity RegimeEdgeCandidate candidateFilterApplied = "effect\_size\_and\_significance" DisparityTestCandidate candidateFilterApplied = "joint\_sample\_size\_only" CommunityDisparityClaim specification = unconditional | conditional\_on\_primary ChargingRegime regimeStabilityScore regimeInEpoch SHACL SHAPE REJECTS any DisparityTestCandidate citing a stage-1 effect-size or significance filter aboutRegime every AnalysisResult must declare: :covariateSet :nullModel :wasDerivedFrom :pValue 

Fig 5The T-Box distinction that makes the pipeline’s methodological discipline structural rather than aspirational. Every claim carries its provenance or SHACL blocks it before it enters the graph.

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 a `regimeInEpoch` pointer, 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 `AnalysisResult` for 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 `ChargingRegime`via `aboutRegime`, and carrying its `specification`(*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`, its `nullModel`, and its `wasDerivedFrom` script 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: 

SELECT ?regimeLabel ?demographic ?unconditionalOR ?conditionalOR WHERE { ?regime a :ChargingRegime ; rdfs:label ?regimeLabel . ?uncondClaim a :CommunityDisparityClaim ; :aboutRegime ?regime ; :aboutDemographicGroup ?demographic ; :specification "unconditional" ; :oddsRatio ?unconditionalOR ; :pValue ?uP . ?condClaim a :CommunityDisparityClaim ; :aboutRegime ?regime ; :aboutDemographicGroup ?demographic ; :specification "conditional\_on\_primary" ; :oddsRatio ?conditionalOR ; :pValue ?cP . FILTER(?uP < 0.001 || ?cP < 0.001) FILTER(CONTAINS(STR(?demographic), "race")) } 

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. 

§ 5 · What we did not do

## 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.

ReproducibilityEvery stage of the analysis (S3 streaming ETL, statute categorization, ontology construction, joint-presence co-occurrence regression, Louvain community detection, dual-specification community disparity, counterfactual regime prediction, SHACL validation, SPARQL reporting) is a separate, logged Python module. A reviewer can rebuild every number in this piece from the archived pipeline against the same USSC data snapshot. 

The pipeline and the ontology

[Open the reproducible pipeline](https://github.com/TruthQuest/us-federal-sentencing-graph?ref=traceoriginresearch.com) 

© 2026 Trace Origin · Source data: U.S. Sentencing Commission Individual Offender Datafiles (public domain at source) · Non-commercial academic citation and journalistic quotation permitted under standard fair use · Commercial use requires prior written permission 

§ 6 · What this demonstrates

## 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.