# Acceptance Criteria ## Milestone M1 — Working foundation M1 is accepted when: - backend starts successfully; - frontend starts successfully; - project can be created; - area can be added as polygon; - dataset can be uploaded or fixture-imported; - metadata is persisted; - basic map/workbench UI exists; - tests cover project/area basics. ## Milestone M2 — Raster/vector foundation M2 is accepted when: - vector data can be imported; - raster metadata can be read; - CRS/bounds/resolution are visible; - area/length calculations use metric CRS; - vector clipping works; - raster clipping either works or fails with a clear limitation message; - outputs are persisted as artifacts. ## Milestone M3 — Detection foundation M3 is accepted when: - a detection run can be started; - detections are persisted with class, confidence and geometry; - detections can be visualized/listed; - detections can be exported as GeoJSON; - provider interface supports future YOLO implementation. ## Milestone M4 — QA/QC foundation M4 is accepted when: - predictions can be compared with a reference layer; - IoU matching works; - precision, recall and F1 are calculated; - false positives and false negatives are available as separate findings/layers; - unit tests cover edge cases. ## Milestone M5 — End-to-end demo M5 is accepted when Demo 1 runs from UI: 1. Open project. 2. Select area. 3. Load raster/reference fixtures. 4. Run detection. 5. Run QA/QC against reference. 6. View map/results. 7. Export GeoJSON and summary. ## Quality gates Before any handoff: - no syntax errors; - no obvious broken imports; - backend test suite run; - frontend build/typecheck run if available; - docs updated; - limitations documented. ## Rejection criteria Reject a build if: - core pages are placeholder-only; - endpoints return hardcoded success without persisted data; - geospatial outputs lack CRS metadata; - code ignores service boundaries; - major errors are hidden from UI; - a feature claims GRB/YOLO/SAM support without provider separation or explicit development-provider labeling.