VOL. I · NO. 01 · A PUBLIC-DATA PROJECT

People, not offenders.

§ 04 · Population Flow — the line the State stopped posting
23
Years since Michigan published a max-out rate

To max out is to serve every day of a sentence and walk out with no parole and no one watching. Michigan last reported how often that happens in 2003 — at 13%. It has published nothing since. So we measured it again, from the State’s own public records, and we’ll tell you exactly how little we’re yet sure of.

So we followed everyone who left.

SourceReleaseObserved outcomePRISONn=162 · observed this windowParole126released to supervisionMax-out30no supervisionsynthetic sink · split from prison→dischargeAbsconded5observed transitionProbation1observed transitionDischarge · 0

Left of the gate: the 32,075 people held in prison, drawn to scale. Right of the gate: the 162 status changes we actually observed this window — too few to even register against that wall, so the gate magnifies them. Ribbon thickness is strictly proportional to count.

Max-out30 of 162 observed transitions · 19% — released to no parole and no supervision.CaveatUpper-bound artifact, not a rate. Sparse snapshots miss an intermediate parole, so this counts every discharge-without-an-observed-parole as a max-out. Observed prison exits this window are dominated by parole (early release); a defensible current max-out rate needs a denser census and a true discharge-date source. Not published as a rate.Population stockInside Michigan flow_stats.json
On what we are — and aren’t — sure of

Of the prison exits we recorded this window — about 156 people — the large majority were released to parole (126): released to community supervision, not held to the end of their sentence. A smaller number were discharged from the system (30). Among those 30 discharges, our snapshots happen to show none with a parole in between — which would naively read as “everyone maxed out.” We don’t report it that way: seeing each person only a few times means a parole that began and ended between two snapshots is invisible to us. The honest takeaway is that release to parole, not maxing out, dominates what we observed— and we won’t put a current max-out rate here until the census is dense enough to measure one, against all prison releases rather than discharges alone. Michigan last published a max-out rate — 13% — in 2003.

The reform scorecard — supporting evidence

People, not throughput.

The ledger behind the flow above — what the churn costs, and how often people cycle back through the system. Cited, provisional, and aggregate. (The max-out figure and its caveats are above.)

30-day cost of churn (observed moves)
$191.5k
210 moves · avg $842 per move (expected)
Marginal operating cost only (fuel + officer time + vehicle). Capital and facility overhead excluded. Source model cited in payload.
Sources & model — 12 citations
  • movement_costs aggregate tabledata/offenders.db (Aggregated SQL only; person-level movement_costs columns are not selected.)
  • Corrections officer loaded wagehttps://www.michigan.gov/corrections/careers/salary-and-benefits
  • Corrections officer loaded wagehttps://www.bls.gov/oes/2023/may/oes_mi.htm
  • Corrections officer loaded wagehttps://www.bls.gov/news.release/ecec.htm
  • Officers per movehttps://corrections.az.gov/sites/default/files/documents/policies/700/DO%20705%20-%20AL%20-%203-18-24.pdf (Arizona DOC Dept Order 705 — MDOC publishes no ratio)
  • Processing time assumptionservice/data/cost_model.yaml:labor.processing_hours_per_move (ASSUMPTION — intake/outtake/property/medical-clearance time; item 7 not verified)
  • IRS/GSA per-mile proxyhttps://www.irs.gov/newsroom/irs-sets-2026-business-standard-mileage-rate-at-725-cents-per-mile-up-25-cents
  • IRS/GSA per-mile proxyhttps://www.gsa.gov/travel/plan-a-trip/transportation-airfare-rates-pov-rates/privately-owned-vehicle-pov-mileage-reimbursement
  • EIA gasoline pricehttps://www.eia.gov/dnav/pet/pet_pri_gnd_dcus_r20_w.htm (Tracked in cost_model.yaml; current payload uses IRS all-in mileage rather than a separate fuel term.)
  • EIA diesel pricehttps://www.eia.gov/petroleum/gasdiesel/ (Tracked in cost_model.yaml; current payload uses IRS all-in mileage rather than a separate fuel term.)
  • Administrative overhead assumptionservice/data/cost_model.yaml:overhead.fixed_admin_per_move (ASSUMPTION — no verified source)
  • Security multiplier assumptionservice/data/cost_model.yaml:security_multiplier (Applied on top; high tier reflects extra officers/special vehicles for max custody.)
Violation returns (observed)
21%
Parole/probation violation returns to prison (national benchmark cited for context; Michigan cohort tracking pending richer census)
This is a placeholder anchor until FlowCohort + longitudinal trend data exist. Every return is a person cycling back through the system.
Generated 6/10/2026 · Window: 2026-03-052026-07-02 · 162 status changes observed
Sources & caveats (do not cite without)
Population stockInside Michigan flow_stats.json (Current mirror status bucket counts.)
Observed status transitionsInside Michigan offender_events (Derived from aggregate offender_events status_change rows.)
Computed max-out groundworkInside Michigan flow_stats.json (Upper-bound local computation; not a published MDOC rate.)
2003 max-out anchorhttps://www.urban.org/sites/default/files/publication/58241/411172-Prisoner-Reentry-in-Michigan.PDF (Urban Institute reported 13% discharged at max in 2003; current MDOC publishes no comparable rate.)
Seed vs true intakeInside Michigan flow_stats.json (Seed observations are not real admissions.)
  • Aggregate-only public payload: no MDOC numbers, names, DOBs, or per-person rows.
  • Flow and max-out figures are low-n groundwork until at least two full census passes and frontier discovery are available.
  • Max-out is an upper bound while sparse snapshots can miss intermediate parole.
  • What we can and cannot say about max-outs yet: observed prison exits this window are dominated by parole (early release), not max-outs. The ~100% figure is a debunked upper-bound artifact, retained only to show the data gap honestly — not a measurement.
  • A max-out rate must be measured against ALL prison releases (parole + discharge), not discharges alone; we do not publish a current rate until the census is denser and a true discharge-date source is available.
  • Source caveat: Michigan OTIS rewrites a person's maximum-sentence date at discharge, so the at-discharge value cannot be used to infer time served; we use the original sentence-of-record date where available.
  • Flow and max-out rates are low-n groundwork; render warnings and basis before any percentage.
  • Flow edge prison_to_max_out is a synthetic Sankey sink split from prison_to_discharge; max-out is not an OTIS stock bucket.
View all observed transitions (accessible table)
FromToCountKind
prisonparole126prison_to_parole
supervisionabsconder5absconded
prisonprobation1prison_to_probation
prisonmax-out30prison_to_max_out
prisondischarged0prison_to_discharge

162 status-change events observed in window · Data is aggregate only · A soft-block is never recorded as a discharge.