fix: make vector ingestion canonical and atomic
GeoIntel CI / docs-smoke (push) Canceled after 0s
GeoIntel CI / contract-smoke (push) Canceled after 0s

This commit is contained in:
Codex
2026-07-14 15:28:14 +02:00
parent 7fa4f1fac9
commit 8c694fa9ce
8 changed files with 145 additions and 25 deletions
+2
View File
@@ -7799,3 +7799,5 @@ Live deployment correction:
- The first Tower rollout exposed a deployment race: all-in-one startup and `live_migration_smoke.sh` both began `alembic upgrade head` after PostgreSQL became reachable.
- Startup committed head `202607140001`; the concurrent smoke transaction rolled back on a duplicate first column. Database contents and the successful migration remained healthy.
- Both Tower deploy entry points now wait for the `geointel` container healthcheck, which includes completed startup migrations and backend readiness, before launching the independent migration smoke.
- The first Statbel upload exposed 3D sector coordinates (`Z=0`) against the canonical 2D PostGIS vector column. The source is valid; GeoIntel now preserves the original artifact, records the Z-feature count and explicitly drops Z only for the 2D query index.
- Vector upload persistence is now atomic across Dataset, DatasetVersion and VectorFeature rows, with storage cleanup on rollback. This prevents the failed-indexing orphan state observed during the live import.
+5
View File
@@ -155,3 +155,8 @@ V1 dataset strategy is complete when:
- Historical cartographic classes can change meaning between editions. Source
classes and processing notes remain provenance, and object changes require
explicit stable source identity.
- Canonical `vector_features.geometry` is 2D EPSG:4326. Valid source Z values
are removed only from the query index, while the original upload remains
unchanged and `z_dimension_feature_count` records that normalization.
- Dataset, version and vector-feature rows are committed atomically. Failed
geometry indexing rolls back all rows and removes the newly stored upload.