06 — Enrollment, capacity, and closures track
The Miami-Dade build adds school-level enrollment against building
capacity, the question behind the district's 2026 closure process. NYC and
Philadelphia carry the same surface on different denominators
(docs/design/10_nyc_enrollment_capacity_utilization.md,
docs/cities/philly/06_enrollment_capacity_utilization.md). This document is
the plan for that track. It sits beside the outcomes plan (03_integration_plan.md)
rather than inside it because it needs no peer groups, no outlier engine, and
no test scores — only an enrollment panel, a capacity table, and a record of
what the district did.
The reference piece is Chalkbeat Chicago's June 13, 2025 analysis of
declining enrollment, small schools, and per-pupil cost at Chicago Public
Schools (chalkbeat.org/chicago/2025/06/13/...). §1 maps every quantitative
element of that piece to a Miami-Dade source. §2 records what is already
measured. §3 is the metric and schema design, §4 the analysis design, §5 the
validation posture, §6 the page, §7 sequencing.
0. Why this is the first Miami page, not the last
- It is live. The School Board closed or consolidated nine schools for 2026-27 (approved June 17, 2026), then on Aug 25, 2026 flagged 27 more as "reassessed" (12) or "under review" (15). The new superintendent paused that process on Sept 2, 2026; community sessions resume in October and a decision is targeted for December 2026. An analysis that is traceable to the district's and state's own files is useful before December.
- The data is fetchable now. The enrollment panel, capacity table, and
closure record are assembled from FLDOE (via
origin.fldoe.org; thewwwhost blocks cloud egress), NCES, the county GIS hub, and M-DCPS board PDFs — all fetched with provenance on 2026-09-15 (findings.md §E). - It needs none of the machinery that gates the outcomes work. No
peer-group derivation, no percentile compute, no comparability regimes.
It is a working-analysis page in the house idiom
(
/philly/methodology/analysis/absenteeismis the model), backed by a committed packet JSON and a full-QA report.
1. Chalkbeat element → Miami-Dade source
| Chalkbeat Chicago element | Miami-Dade equivalent | Grain · years · format | Status |
|---|---|---|---|
| District enrollment, 10-year trend (~325k, −70k in a decade) | M-DCPS Statistical Highlights 10-year table (api.dadeschools.net/WMSFiles/171/MDCPS%20Highlights/SH{YYYY}.pdf); FLDOE Membership in Florida's Public Schools ({YYYY}MembInFLPublicSchools.xlsx) | district · 2016-17→2025-26 (SH), 2013-14→2025-26 (FLDOE) · PDF / xlsx | SH 2024-25 and 2025-26 fetched; FLDOE district file listed |
| School-level enrollment panel | FLDOE Membership by District and School by Grade (Survey 2 = October), https://www.fldoe.org/file/7584/{YY}{YY}MembBySchoolByGrade.xlsx; by race: ...ByGradeByRace.xlsx | school × grade · 2016-17→2025-26 · xlsx | fetched 2025-26, 2024-25, 2018-19 (findings.md F.3); 2013-14 returns 404 |
| — independent copy of the same count | NCES CCD school membership (ccd_sch_052_*) | school × grade × race × sex · through 2023-24 · csv | fetched, measured (findings.md §M.1–M.4) |
| — sub-annual counts (the Herald's Feb-2012→Feb-2026 panel) | M-DCPS OADA Student Membership portal (oada.dadeschools.net/StudentMembership/) | school × month · ~2012→ · web | unreachable from cloud; unverified |
| Projection range 3 years out | FLDOE COFTE (district × grade, 10-yr cohort survival); M-DCPS DEFP / 5-Year Work Plan (per school); 2026-27 budget Executive Summary (uwFTE) | district / school · annual · PDF | budget, COFTE and DEFP fetched; DEFP table layout to parse in C0 |
| Births driver (−43% 2011–2021 in Chicago) | not in district data; use FL vital statistics by county (v2) | county · annual | not sourced |
| Space utilization = enrollment ÷ design capacity | enrollment ÷ FISH capacity (Florida Inventory of School Houses): permanent vs permanent+relocatable. Sources: FLDOE FISH Level of Service Report per district (fldoe.org/core/fileparse.php/20080/urlt/2425Dade.pdf, 2022-23→2024-25); county GIS Public School layer (CAPACITY, ENROLLMNT); M-DCPS Attendance Zone Recommendations (ABC book) for targeted schools | school · annual (LOS), snapshot (GIS), targeted schools + 2-yr projection (ABC) · PDF / REST / PDF | GIS fetched, measured; ABC 2026-27 fetched, parsed; LOS fetched 2022-23→2024-25 (utilization = COFTE ÷ school capacity, findings.md F.7) |
| "Half-empty" / "under one-third" thresholds (30% / 47 schools) | district's own cut points: "reassessed" letters went to schools ≤50% utilization; Strategic Plan 2026-31 baseline 66% district-wide, target 80% by 2031 | — | verified (press + plan) |
| Per-pupil cost by school ($18.7k avg vs $50–93k) | FLDOE ESSA School Per-Pupil Expenditures (fldoe.org/file/7507/ESSA-2025-School-Per-Pupil-Expenditures.xlsx, one per year) | school · 2018-19→2024-25 · xlsx | fetched 2024-25 and 2022-23 (findings.md F.8); denominator to confirm from page notes |
| Tiny schools in big buildings (28 students / 1,000 seats) | ABC book capacity blocks (e.g. Moton ES 123 / 679 permanent stations = 18%) | school | verified |
| Staffing ratios, duplicated admin (27 staff / 28 students) | NCES CCD staff file (teacher FTE, ccd_sch_059_*); M-DCPS per-school dashboard PDFs (pdfs.dadeschools.net/guidek12schooldashboards/{school}.pdf: admin / instructional / support counts); FLDOE staff files are district-level only | school · annual · csv / PDF | CCD fetched; dashboards verified (one per school, ~340 PDFs) |
| Capital spent on the emptiest schools; repair backlog | Strategic Plan: $3.69B deferred-maintenance baseline (district-wide); per-school capital only in the DEFP / Capital Plan | district; school (DEFP) · PDF | partial |
| Sector counts (634 schools incl. 119 charter) | SH 2025-26: 503 schools = 341 traditional + 162 charter; CCD 2023-24: 536 open = 378 + 158 | — | verified |
| Facilities consolidation study | none standalone; Board item H-10 (June 17, 2026) orders an "ABC dashboard" with utilization trends — not yet built | — | verified (absence) |
| Moratorium / politics | Sept 2, 2026 pause; Schools of Hope co-location law (2017, amended 2025); Success Academy approved for five HS campuses (Apr 2026) | — | verified (press) |
| Enrollment drain to charters / vouchers | budget uwFTE: charter 86,432 (first projected decline), FES vouchers 82,470 (2026-27 proj.); Herald: scholarship students ~4,000 (2018-19) → 60,850 (2024-25) → ~72,500 (2025-26); OADA Evaluation Matters v12 n4 (Feb 2023): per-school resident-student shares in district / charter / FES | district; school (2022 only) · PDF | verified (secondary) |
Full source detail, URLs and gotchas: 01_inventory.md §H and
sources.yaml (enrollment_*, capacity_*, ppe_*, closure_* entries).
2. What is already measured (from findings.md)
All from files fetched on 2026-09-15 with sha256 provenance under
data/cities/miami/sources/, scripts in probe/:
- Five-year loss is district-run and broad-based. Continuing district-run regular schools went from 277,506 to 247,147 students (−10.9%) between Oct 2018 and Oct 2023; the median school lost 12.6%; one in five lost a quarter or more. Continuing charters grew 11.4%; the charter sector overall grew 24% with 38 new schools.
- The pipeline is shrinking from the bottom. Kindergarten fell 7.2% and grade 5 11.8% over the same window while grades 9–10 grew 3–4%; in 2023-24 the K cohort is 82% of the grade-12 cohort. Elementary schools take the loss first.
- Utilization is lower than Chicago's headline but the tail is real. Across 316 district-run regular schools in SY2024-25 (K-8, 6-12 and K-12 included), October headcount ÷ permanent FISH capacity has median 66.7%; 21.2% of schools (67) are below 50% and 4.7% (15) below one-third (Chicago: 30% and 7%). District-wide sum ÷ sum is 69.7% (
data/analysis/miami-enrollment.json→utilization); the Strategic Plan's baseline is 66%. In the same school year NYC reads median 80%, 13.3% below 50%, 3.6% below one-third and 83.1% citywide (1,702 schools in DOE buildings), and Philadelphia 67.1%, 24.7%, 7.9% and 68.4% (215 district sites); the three differ in denominator, universe and Pre-K basis (Philadelphia doc §4.2, and the Philadelphia packet'scross_cityblock). - Size predicts the district's own lists. Using the 2026 closure and review lists as an independent reference and the Oct 2023 CCD count as the predictor: elementary schools under 300 students were flagged at 52% vs 7% for the rest (lift 7.5×, Fisher p ≈ 5e-8); under 400, 37% vs 2% (lift 19×). Five of the nine closed schools were in the under-300 tail two years before the vote.
- Utilization has three numerators. The state's FISH level-of-service report divides COFTE (a funding FTE) by school capacity including relocatables; the board's ABC book divides headcount by permanent FISH capacity; the county GIS divides a 2024-25 count by permanent capacity. The same school reads differently in each (e.g. Brentwood ES: 43% in FISH LOS 2024-25, 36% in the district's Aug 2026 letter). The plan stores each numerator and capacity separately.
- The GIS
CAPACITYfield is permanent FISH capacity (7 of the 9 closed schools match the ABC book's "Perm FISH Cap" exactly; one carries the perm+temp figure; one differs by vintage). ItsENROLLMNTis a count between Oct 2023 and 2025-26 — consistent with 2024-25 — so it must be re-labelled by year, not treated as current.
3. Metrics and schema
Long-format facts in miami_school_year_metrics (same grain as
philly_school_year_metrics: school × year × metric_key × subgroup), plus
one new entity for events.
| metric_key | unit | direction | source (ingested) | notes |
|---|---|---|---|---|
enrollment_oct | COUNT | NEUTRAL | FLDOE MembBySchoolByGrade | Survey 2 headcount; subgroups by grade stored as enrollment_oct_g{PK..12}; by race from the ByRace file |
enrollment_oct_ccd | COUNT | NEUTRAL | NCES CCD membership | cross-publisher copy; expected to equal FLDOE within reporting tolerance |
enrollment_change_5yr_pct | PERCENT | NEUTRAL | derived | (enr_t / enr_{t−5} − 1) × 100, continuing schools only |
k_to_g12_ratio | INDEX | NEUTRAL | derived | pipeline indicator; district and school (K-8/ES: K ÷ G5) |
fish_capacity_permanent | COUNT | NEUTRAL | FLDOE FISH LOS report (PDF) / county GIS | permanent satisfactory student stations |
fish_capacity_school | COUNT | NEUTRAL | FLDOE FISH LOS report | "School Capacity" incl. relocatables (the ABC book's "Perm & Temp FISH Cap") |
cofte | COUNT | NEUTRAL | FLDOE FISH LOS report | capital-outlay FTE, the state's utilization numerator |
utilization_school_capacity_pct | PERCENT | NEUTRAL | FLDOE FISH LOS report | the state's published figure = cofte ÷ fish_capacity_school |
utilization_permanent_pct | PERCENT | NEUTRAL | derived | enrollment_oct ÷ fish_capacity_permanent; the ABC book's "% Utilization Perm FISH Cap" |
utilization_perm_temp_pct | PERCENT | NEUTRAL | derived | enrollment_oct ÷ fish_capacity_school; the county concurrency Level-of-Service measure (100% of FISH incl. relocatables) |
per_pupil_expenditure_total | USD | NEUTRAL | FLDOE ESSA school PPE xlsx | federal + state/local; carry the components as _federal, _state_local |
teacher_fte | COUNT | NEUTRAL | NCES CCD staff file | school-level; FLDOE only publishes district staff |
students_per_teacher | INDEX | NEUTRAL | derived | enrollment_oct ÷ teacher_fte |
staff_admin_count, staff_instructional_count, staff_support_count | COUNT | NEUTRAL | M-DCPS school dashboard PDFs | v2 unless the PDFs parse cleanly |
projected_enrollment_{y+1,y+2} | COUNT | NEUTRAL | ABC book (targeted schools) / DEFP | the district's own projections, kept separate from ours |
Schema additions (Prisma, additive):
MetricUnitgainsUSD.MetricDirection.NEUTRALalready exists — none of these metrics is "better" in one direction, and the ratings pages must not rank on them.MiamiSchoolcarriesfishNumber(the FISH facility id, if it differs from the school number),yearBuilt(from the FISH age-of-facilities table if it resolves to school level; else null),boardDistrict,region.MiamiSchoolEvent— new table:(schoolNumber, schoolYear, action, detail, sourceDocUrl, boardItem, decidedAt)withaction ∈ {CLOSED, CONSOLIDATED_INTO, RECEIVED_CONSOLIDATION, REPURPOSED, BOUNDARY_CHANGE, REASSESSED, UNDER_REVIEW, CO_LOCATION}. Populated by hand from the ABC books 2019-20→2026-27 and the Aug 2026 letters, each row citing the PDF. This is the reference layer everything else is validated against and the timeline the page draws.
4. Analysis design (first principles)
The Chicago piece adopts thresholds by convention ("under one-third", "half-empty"). Here the cut points are measured, the decline is decomposed, and every claim carries its base rate.
- Where does closure risk actually jump? Fit P(flagged in 2026 | utilization, enrollment, level) on the 2024-25 panel and report the lift over the base rate at candidate cut points (33%, 50%, 66%; 300 / 400 / 500 students). The 2026 lists are the independent reference;
findings.md §M.6is the first pass on enrollment alone. Publish the lift table, not a single threshold. - Decompose the decline. For each continuing school, split the five- and ten-year change into (a) cohort entry — change in K (or entry-grade) intake, (b) cohort survival — grade-to-grade retention vs the prior cohort, (c) new competitors — charter and Schools-of-Hope seats opened within the attendance boundary (GIS boundary polygons + charter layer), and (d) the residual. District-level FES-voucher and newcomer counts (budget, Herald, superintendent statements) bound (d) but cannot be attributed per school, and the plan says so.
- Cost of smallness. Per-pupil expenditure vs enrollment, by level, with the ESSA file's own denominator; report the elasticity and the excess cost of the sub-300 tail relative to the level median, in dollars and as a share of the district budget. Cross-check the ESSA PPE against the budget's school allocation where a school appears in both.
- Ablation, not narrative. Re-run 1–3 excluding (i) magnets and choice programs, (ii) schools with a co-located charter, (iii) 2020-21 and 2021-22 (pandemic counts), and report which conclusions survive.
- Negative results stay in. If utilization adds nothing over enrollment for predicting the lists, say so; if the charter-proximity term is null, say so.
5. Validation posture (same four checks)
| Check | Reference | Notes |
|---|---|---|
| (i) completeness | every school in the FLDOE MSID with a district-13 number appears in each year's membership file | closures/openings reconciled against MiamiSchoolEvent |
| (ii) base case | re-read of the exact FLDOE xlsx (enrollment), FISH LOS PDF table (capacity), ESSA xlsx (PPE) | PDF tables are re-read with a second parser (pdfplumber vs camelot) and must agree cell-for-cell |
| (iii-a) presentation cross-reference | ABC book capacity blocks; M-DCPS school dashboard PDFs; Statistical Highlights district totals | same-publisher; exact match expected on capacity, count-date differences expected on enrollment |
| (iii-b) independent publisher | NCES CCD membership and staff; county GIS capacity | CCD is the federal copy of the state's submission — a mismatch is a real finding, not noise |
| (iv) computed values | utilization_*, enrollment_change_*, students_per_teacher recomputed in Python from validated inputs | packet-recomputation gate as in the Philly full QA |
Known reconciliation hazards, stated up front: October membership vs
first-day counts (~8–9k apart district-wide), FTE vs headcount (budget FTE
includes charter and voucher FTE), permanent vs perm+temp capacity, and
the undocumented count date of the GIS ENROLLMNT field.
6. The page
/miami/methodology/analysis/enrollment in the working-analysis idiom
(numbered takeaways → figures with "how to read" notes and source
footnotes → appendix), noindex until its full QA passes, every figure
linked to a proof tree. Figures, in order:
- District enrollment by sector, 2013-14→2025-26 (FLDOE + SH), with the voucher and charter FTE series from the budget alongside.
- Grade pipeline: K through 12 in 2018-19 vs 2023-24 (the entry-cohort collapse).
- School-level five-year change, histogram by level, pandemic years hatched.
- Utilization distribution (permanent FISH), with the district's 50% and 80% lines and the 2026 closure and review schools marked.
- Enrollment vs per-pupil expenditure by level (the Chicago figure), with the sub-300 tail's excess cost.
- Map: utilization by school with attendance boundaries and charter / Schools-of-Hope sites.
- Timeline of board actions 2019-20→2026-27 from
MiamiSchoolEvent.
Each figure ships with a plain-language footnote on which count and which capacity definition it uses.
7. Sequencing and effort
| Step | Work | Effort |
|---|---|---|
| C0 | Fetch the remaining FLDOE membership years (7 of 10 outstanding), ESSA PPE (5 of 7), earlier FISH LOS editions if any, DEFP 2024, ABC books 2019-20→2025-26; parse FISH and ABC PDF tables with a two-parser gate | M |
| C1 | miami_schools directory (MSID + CCD + GIS join on the 4-digit number), MiamiSchoolEvent from the ABC books, enrollment + capacity + PPE loaders | M |
| C2 | Validation harness for §5; full-QA JSON | M |
| C3 | Analysis packet (§4) + page (§6) + proof trees | L |
C0–C3 is roughly three to four weeks for one engineer who knows the Philly build, and can run in parallel with the outcomes P1. The board's December 2026 decision date is the deadline that matters.
8. Gaps to report honestly
- No per-school capital spending or building age is verified yet (both should be in the DEFP / FISH inventory; PDF-only).
- No public utilization dashboard exists; the ABC dashboard ordered in June 2026 is not yet built.
- The OADA monthly membership portal and the Miami Herald's and Axios's pages are unreachable from the cloud environment; FLDOE files are reachable only through
origin.fldoe.org, which is undocumented and could change. - Voucher counts exist only at the county level and only from secondary sources plus one 2023 district study; no per-school attribution is possible from public data.