Files
geointel/docs/governance/ARCHITECTURE_INVARIANTS.md
T
Jens faeb58ef6d
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
Initial public release
2026-08-31 21:56:53 +02:00

1.9 KiB

Architecture Invariants

These invariants must remain true throughout implementation.

Core invariants

  1. GeoIntel is backend/API-driven. Frontend does not own business logic.
  2. PostGIS is the system of record for geometries and analysis outputs.
  3. Filesystem/object storage stores binary artifacts, not authoritative feature state.
  4. Heavy processing runs as jobs and reports state transitions.
  5. Every analysis result belongs to an analysis_run.
  6. Every detection/segmentation stores model metadata when produced by a model.
  7. Every dataset stores source metadata, validation state and CRS information.
  8. API responses use a consistent envelope.
  9. Frontend state follows backend truth; it may cache but not invent completion states.
  10. Exports are generated from persisted outputs, not transient frontend state.

Geospatial invariants

  1. API GeoJSON uses EPSG:4326 unless endpoint explicitly states otherwise.
  2. Belgian metric calculations use EPSG:31370 where possible.
  3. Area values are stored with units.
  4. Length values are stored with units.
  5. Invalid geometries are fixed, rejected or marked with a validation error; never silently accepted.
  6. MultiPolygon/MultiLineString handling must be explicit.
  7. Geometry simplification may not mutate authoritative geometry unless a derived output is created.

AI invariants

  1. AI inference is an analysis run.
  2. Model outputs are candidates with confidence, not ground truth.
  3. Thresholds are parameters and must be stored.
  4. Tiling parameters are parameters and must be stored.
  5. Model version is required for reproducibility.
  6. QA/QC is separate from inference.

UI invariants

  1. Every page has empty/loading/error/success states.
  2. Every destructive action requires confirmation.
  3. Every unavailable feature must show an honest pending state.
  4. The map is a workbench surface, not a decorative background.
  5. Metrics must always indicate source and timestamp.