# M9 Build Pass Scorecards Use these scorecards after every Codex pass. A pass is not considered complete until its scorecard is mostly green. ## Pass 0 — Audit - [ ] Repository tree inspected. - [ ] Existing docs summarized. - [ ] Missing implementation listed. - [ ] Build blockers listed. - [ ] Next pass selected. - [ ] No feature code added. ## Pass 1 — Backend Foundation - [ ] FastAPI app starts. - [ ] Health endpoint exists. - [ ] Settings load from environment. - [ ] CORS configured for local frontend. - [ ] API envelope helper exists. - [ ] Error handler exists. - [ ] Backend tests run. ## Pass 2 — Database Foundation - [ ] SQLAlchemy or approved ORM configured. - [ ] Alembic migrations initialized. - [ ] PostGIS extension migration exists. - [ ] Project model exists. - [ ] Area model exists with geometry. - [ ] Dataset model exists. - [ ] Local database connection documented. ## Pass 3 — Project/Area APIs - [ ] Create/list/read project. - [ ] Create/list/read area. - [ ] GeoJSON polygon validation. - [ ] Area size calculation. - [ ] Envelope responses. - [ ] Error responses for invalid geometry. - [ ] Tests for happy and failure paths. ## Pass 4 — Dataset Manager Skeleton - [ ] Dataset upload endpoint. - [ ] File stored under documented storage root. - [ ] Metadata extraction placeholder with real file inspection when possible. - [ ] Dataset list/read APIs. - [ ] Status lifecycle present. - [ ] Tests with fixtures. ## Pass 5 — Frontend Foundation - [ ] React app starts. - [ ] Route shell exists. - [ ] API client uses envelope. - [ ] Error/loading/empty states exist. - [ ] Project list page exists. - [ ] Workspace shell exists. ## Pass 6 — Map Workbench Shell - [ ] MapLibre or approved map abstraction installed. - [ ] Area polygon can be displayed. - [ ] Demo GeoJSON can be loaded. - [ ] Layer panel shell exists. - [ ] No hardcoded fake analysis results. ## Pass 7 — Raster/Vector Core Skeleton - [ ] Raster metadata endpoint skeleton. - [ ] Vector metadata endpoint skeleton. - [ ] CRS field exposed. - [ ] Bounds field exposed. - [ ] UI metadata panels exist. ## Pass 8 — QA/QC Skeleton - [ ] QA service interface exists. - [ ] IoU function unit-tested with fixtures. - [ ] Precision/recall formulas implemented. - [ ] QA endpoint accepts reference and predicted layer IDs or fixture IDs. - [ ] QA result card exists. ## Pass 9 — Stabilization - [ ] All smoke commands documented. - [ ] Changelog updated. - [ ] Known limitations updated. - [ ] Next advanced module recommendation written.