# 04 — Contribution Plan

Identical workflow to `docs/cities/philly/04_contribution_plan.md`; only
the branch map differs. Read that file for the rules (sync first, additive
and feature-flagged, shared-infrastructure changes ship as a separate
NYC-facing PR first, no force-pushes to merged branches, never commit
source bytes — provenance and small reference CSVs only).

## Branch per capability — `miami/<item>`

| Order | Branch | Maps to | Scope |
|---|---|---|---|
| init | `miami/init` | this folder | design docs, `sources.yaml`, `probe/`, provenance, reference tables |
| 0 | `miami/repo-setup` | P0 | `miami_*` Prisma models, `pipeline_miami/discover.py`, `scripts/loaders/miami/_lib.ts`, empty configs |
| C0 | `miami/closure-data` | C0 | FLDOE membership + FISH + ESSA PPE + ABC-book fetch and PDF-table parsers |
| 1 | `miami/source-ingest-outcomes` | P1 | MSID directory, School Grades, SRS assessments, learning gains, graduation, absenteeism, SESIR loaders |
| C1–C2 | `miami/closure-loaders`, `miami/closure-validation` | C1–C2 | `MiamiSchoolEvent`, enrollment/capacity/PPE loaders, harness |
| 2 | `miami/source-ingest-survey` | P2 | climate-survey workbooks (students / parents / staff) |
| C3 | `miami/closure-analysis` | C3 | packet, page, proof trees for `/miami/methodology/analysis/enrollment` |
| 3 | `miami/derive-peer-groups` | P3 | KNN peer groups + percentiles |
| 4 | `miami/validation` | P4 | (i)–(iii) per metric; School Grades + CCD/EDFacts/CRDC references |
| 5 | `miami/site-and-stories` | P5 | routes, navbar city tab, stories, methodology hub |

Commit-message style: sentence-case, scope-prefixed imperative, e.g.
`Miami: add FISH level-of-service PDF parser + base-case check`.

PR description template (unchanged): what item it ships · what is new vs.
lifted · how to run it · what stayed unchanged · QA-report links.
