31 of the district's 54 emptiest schools are on no closure list, and 12 listed schools are at least half full
A reproducibility log: the data this analysis touched, the queries it ran, and how a third party would re-run it.
Summary
Joined 2024-25 utilization (headcount ÷ permanent FISH capacity) to the board's 2026 lists for district-run elementary, K-8 and middle schools and cross-tabulated flagged status at utilization cuts, with Fisher's exact test.
Data sources
- Database tablemiami_schools
One row per school number (MSID directory + CCD + GIS); sector, level, magnet status, activity code, region.
- Database tablemiami_school_year_metrics
Long-format facts: (school_number, year, metric_key, subgroup) with value, suppressed, denominator, peer and district percentiles, and the residual-z columns.
- Database tablemiami_school_events
Board actions per school and year (closed, consolidated, under review, reassessed) with the PDF page each cites.
- Cached output
data/analysis/miami-enrollment.jsonThe enrollment analysis packet: trend, school change, utilization, lift table, spending versus size.
- External datasetFLDOE Membership by District and School by Grade (Survey 2)
- External datasetFLDOE FISH Level of Service report (Dade)
- PublicationM-DCPS Attendance Zone Recommendations 2026-27 (board book)
Steps
Universe and utilization (the packet also requires a 2024-25 October headcount, which the derived utilization cell already implies).
SELECT m.school_number, m.value AS utilization FROM miami_school_year_metrics m JOIN miami_schools s USING (school_number) WHERE m.metric_key = 'utilization_permanent_pct' AND m.year = '2024-25' AND m.subgroup = 'ALL' AND NOT m.suppressed AND NOT s.is_charter AND s.school_type = 'REGULAR' AND s.school_level IN ('Elementary','K-8','Middle');Flagged = on any of the four 2026 lists (closure and consolidation actions are filed under 2026-27, reassessment and review under 2027-28, so pair each action with its listed school year).
SELECT DISTINCT school_number FROM miami_school_events WHERE (school_year = '2026-27' AND action IN ('CLOSED','CONSOLIDATED_INTO')) OR (school_year = '2027-28' AND action IN ('REASSESSED','UNDER_REVIEW'));Cross-tab at 50% and Fisher exact (the packet's lift_table.cuts).
Caveats
Utilization uses permanent capacity; the state's own measure (COFTE ÷ school capacity incl. relocatables) is served separately and gives similar counts. June actions cite the board book and page; the August lists cite contemporaneous reporting. Carol City Middle is school 6051.
Reproduce
Follow docs/cities/miami/07_runbook.md: `make miami-discover-all`, parse the PDFs, run the loaders in order, `make miami-verify`, then the analysis scripts. The queries below run directly against the local Postgres.
The recipe lives at data/cities/miami/stories/recipes.ts in the repo.