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=3893 · observed this windowParole2,222released to supervisionMax-out185no supervisionsynthetic sink · split from prison→dischargeReturned247held or cycled backDischarge7sentence served under supervisionDischarge652observed transitionParole Violation Return162observed transitionAbsconded138observed transitionParole133observed transitionParole60observed transitionProbation31observed transitionPrison25observed transitionProbation17observed transitionDischarged10observed transitionUnknown3observed transitionUnknown1observed transition

Left of the gate: the 29,917 people held in prison, drawn to scale. Right of the gate: the 3,893 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-out185 of 3,893 observed transitions · 5% — released to no parole and no supervision.Caveatupper-bound artifact at low-n - not publishable yetPopulation stockInside Michigan flow_stats.json
On what we are — and aren’t — sure of

Of the prison exits we recorded this window — about 2414 people — the large majority were released to parole (2222): released to community supervision, not held to the end of their sentence. A smaller number were discharged from the system (192). Among those 192 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)
$0.0k
0 moves · avg $989 per move (expected)
Marginal operating cost only (fuel + officer time + vehicle). Capital and facility overhead excluded. Source model cited in payload.
Sources & model — 13 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
  • Corrections officer loaded wagehttps://sfa.senate.michigan.gov/StateBudget/LegisTransfer2025-8.pdf
  • 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 9/4/2026 · Window: 2026-03-052026-09-01 · 3893 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.
  • 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
prisonparole2222prison_to_parole
paroledischarged652parole_to_discharge
prisonprison247prison_to_prison
paroleprison162parole_violation_return
supervisionabsconder138absconded
paroleparole133parole_to_parole
absconderparole60absconder_to_parole
prisonprobation31prison_to_probation
absconderprison25absconder_to_prison
paroleprobation17parole_to_probation
absconderdischarged10absconder_to_discharged
paroleunknown3parole_to_unknown
absconderunknown1absconder_to_unknown
prisonmax-out185prison_to_max_out
prisondischarged7prison_to_discharge

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