# M6 Self-review Checklist for Codex Codex must run this checklist before ending any pass. ## Scope check - [ ] I implemented only the requested pass or a clearly justified adjacent dependency. - [ ] I did not add out-of-scope features. - [ ] I did not change frozen architecture decisions. - [ ] I documented any assumption I made. ## Backend check - [ ] API schemas are typed. - [ ] Services contain business logic; routes stay thin. - [ ] Errors use the standard error contract. - [ ] Jobs use the job lifecycle contract when needed. - [ ] Database operations are safe and migration-compatible. ## Frontend check - [ ] The UI has loading, empty, error, success states. - [ ] API calls go through the shared client. - [ ] Components follow the design system. - [ ] No important action is hidden behind unclear UI. - [ ] State can be refreshed from backend data. ## Geospatial check - [ ] CRS is captured and shown where relevant. - [ ] Geometry validity is checked. - [ ] Area/length units are explicit. - [ ] GeoJSON export is valid. - [ ] No coordinate conversion is silently assumed. ## AI check - [ ] Model metadata is recorded. - [ ] Thresholds are explicit. - [ ] Inference output is georeferenced when input is georeferenced. - [ ] CPU fallback exists or limitation is documented. - [ ] Raw inputs are immutable. ## Test check - [ ] Unit tests were added or updated. - [ ] Smoke tests still pass or failure is documented. - [ ] Fixtures are deterministic. - [ ] No test relies on live external services unless explicitly marked integration. ## Documentation check - [ ] Docs reflect changed behavior. - [ ] Changelog/pass log updated. - [ ] Remaining TODOs are in docs, not hidden in code. - [ ] Handoff summary includes changed files, tests, limits, next pass.