GeoIntel release gates / Compile, test, contracts and builds (push) Successful in 1m49s
GeoIntel release gates / Python and npm vulnerability policy (push) Successful in 21s
GeoIntel release gates / Production AI image, SBOM and container scan (push) Successful in 5m39s
GeoIntel release gates / Deploy exact gated revision to Unraid (push) Failing after 58m43s
5.5 KiB
5.5 KiB
Codex Execution Plan — GeoIntel M1 Build
Core instruction
Build backend-first, then connect frontend. Do not start with visual polish. The project must become a working GeoAI Workbench foundation.
Pass 0 — Repo verification
Before coding:
- read README.md
- read docs/SPECIFICATION_FREEZE_M0.md
- read docs/V1_SCOPE_FREEZE.md
- read docs/SERVICE_ARCHITECTURE.md
- read docs/REPOSITORY_CONVENTIONS.md
- inspect current repo structure
- create/update docs/CODEX_EXECUTION_LOG.md
Output:
- execution log started
- no product scope changes
Pass 1 — Backend foundation
Implement:
- FastAPI app structure
- config management
- database session setup
- SQLAlchemy base
- health endpoint
- error handling
- repository/service folders
- pytest setup
Acceptance:
- backend starts
- health endpoint returns OK
- tests run
Do not implement GIS processing yet.
Pass 2 — Database schema foundation
Implement models and migrations if migration tooling is present:
- Project
- Area
- Dataset
- Layer
- AnalysisRun
- Detection
- Segmentation
- Metric
- QualityCheck
- Export
- JobLog or AnalysisLog
Acceptance:
- tables can be created
- model relationships work
- basic repository tests pass
Pass 3 — Project and area API
Implement:
- project CRUD
- area CRUD
- GeoJSON polygon input
- area/perimeter calculation using metric CRS
- validation for invalid geometry
Acceptance:
- create project
- create area
- retrieve project with areas
- tests for simple polygon area
Pass 4 — Dataset Manager API
Implement:
- upload endpoint
- storage service
- dataset records
- file checksum
- type detection
- metadata endpoint
Acceptance:
- upload vector fixture
- upload raster fixture if available
- dataset metadata stored
- unsupported file returns clear error
Pass 5 — Vector foundation
Implement:
- GeoJSON import
- zipped shapefile import if feasible
- CRS detection
- geometry validation
- clipping by area
- summary metrics
Acceptance:
- vector fixture imported
- vector clipped by test area
- area/length stats correct
Pass 6 — Raster foundation
Implement:
- raster metadata extraction
- raster bounds/CRS/resolution/bands
- raster clip by area when CRS exists
- simple histogram/statistics
- tile job records or actual tile generation
Acceptance:
- raster fixture metadata read
- missing CRS warning works
- clip operation returns artifact path or clear unsupported message
Pass 7 — Reference layer provider foundation
Implement:
- provider interface
- local fixture provider
- configurable GRB WFS provider shell
- caching reference layer as Dataset/Layer
Acceptance:
- fixture building reference layer loads
- provider output normalized
- cached layer can be used by QA service
Pass 8 — Detection pipeline foundation
Implement:
- DetectionService
- DevelopmentDetectionProvider with deterministic fixture output
- YoloDetectionProvider interface/shell if dependency not ready
- detection analysis run lifecycle
- detection geometry persistence
- GeoJSON export
Acceptance:
- run detection on fixture/project
- detections are persisted
- detections appear as layer output
- export returns GeoJSON
Important:
- Use development provider only as a temporary provider, not as fake final logic.
- Keep provider interface ready for YOLO.
Pass 9 — QA/QC engine
Implement:
- IoU calculation
- matching algorithm
- precision/recall/F1
- false positive/false negative layers
- quality check persistence
Acceptance:
- unit tests for IoU
- unit tests for matching
- QA run compares detection fixture to reference fixture
- metrics persisted and returned
Pass 10 — Segmentation foundation
Implement:
- segmentation analysis run lifecycle
- development segmentation provider
- mask artifact record
- polygon output if simple fixture allows
Acceptance:
- segmentation run can be created
- segmentation result can be listed/exported
Pass 11 — Frontend foundation
Implement:
- React app shell
- routing
- API client
- project list/create page
- project workspace page
- status/error/empty components
Acceptance:
- frontend starts
- user can create/open project through API
Pass 12 — Dataset and Map UI
Implement:
- Dataset Manager page
- Map Workbench page
- layer manager
- display vector outputs
- show dataset metadata
Acceptance:
- user can upload/import dataset
- user can see layer on map or at least its extent/feature list if map library setup is incomplete
Pass 13 — Detection and QA UI
Implement:
- Detection Lab page
- run detection with provider selector
- show detections
- QA/QC Lab page
- run QA against reference layer
- show metrics and findings
Acceptance:
- Demo 1 can be executed end-to-end from UI using fixtures/development provider
Pass 14 — Export UI and workflow polish
Implement:
- Exports page
- export history
- GeoJSON download
- run summary view
- useful empty states
Acceptance:
- user can download detection/QA output
Pass 15 — Documentation and handoff
Update:
- docs/TODO.md
- docs/CODEX_EXECUTION_LOG.md
- README quickstart
- known limitations
Run:
- backend tests
- frontend typecheck/build if available
Final response must include:
- what was built
- tests run
- what remains open
- exact next pass recommendation
Absolute restrictions
- Do not remove documentation.
- Do not implement unrelated features.
- Do not add authentication.
- Do not add payment/sharing/multi-user.
- Do not hide broken endpoints behind UI-only mock data.
- Do not calculate metric geometry on EPSG:4326.
- Do not export misleading geospatial outputs from non-georeferenced rasters.