Zum Inhalt

Gate-1 Acceptance — PoC Scope

Status snapshot of the Phase-1 Gate-1-equivalent acceptance criteria applied to the PoC scope (see PHASE-0-ROADMAP §Gate-1-Äquivalent).

Measurement date: 2026-04-23 · Cluster: local k3d dashi · Data ingested: Dresden OSM shapefiles (29 files), QGIS Military Grids GPKG (4 layers), GeoTIFF (sample.tif, EPSG:32631), LAZ (118 MB NZ LiDAR)

# Kriterium Messung Zielwert Stand Belegt durch
1 End-to-End-Pipeline funktionsfähig Sample-Datei rein → STAC-Item raus → Tile- + SQL-Query-Ausgabe Bestanden poc/smoke/ingest.sh + poc/smoke/catalog.sh + poc/smoke/serving.sh alle grün
2 KRS-Transformation korrekt Stichprobenprüfung von 3 Datensätzen 100 % korrekt sample.tif EPSG:32631 → EPSG:4326 COG · points.laz NZGD2000 NZTM2000 → EPSG:4326 COPC · Dresden shapefiles EPSG:4326 → EPSG:4326 (no-op), BBox-Sichtprüfung stimmt
3 STAC-Suche funktionsfähig BBox-Abfrage liefert korrekte Items Bestanden /search?bbox=13.5,50.8,14.0,51.2 → 30+ Items im Dresden-Raum
4 SQL-Abfrage auf Curated-/Processed-Zone Einfache Abfrage in < 10 Sek. Bestanden ST_Intersects über 367 219 Features, 10 490 Treffer, < 2 s
5 COG-Serving funktionsfähig TiTiler liefert PNG für Raster-Item Bestanden /cog/tiles/10/519/340.png → 256×256 RGBA PNG
6 Pipeline idempotent Zwei aufeinanderfolgende Läufe, keine Duplikate Bestanden dataset_id = sha256(filename + content + layer), wiederholte Läufe liefern denselben STAC-Item-ID → stac.post_item 409 → PUT-Upsert. Zusätzlich Prefect-cache_key_fn=task_input_hash, der identische Tasks direkt aus dem Cache liefert.
8 Prefect-Orchestrierung aktiv Flow registriert + ausgeführt, Run zeigt COMPLETED im Prefect-API Bestanden poc/smoke/prefect.sh: Flow dashi-ingest mit @task Retry-Policy (2× mit 30s), task_input_hash Cache, Prefect 3 Server in dashi-data Namespace
7 Betriebsdoku vorhanden Setup + Teardown + Troubleshooting Vollständig docs/OPERATIONS.md, docs/TROUBLESHOOTING.md, poc/docs/k3s-setup.md

Unterstützende Metriken

Ingestion

Kenngröße Wert
Quell-Formate verarbeitet Shapefile, GeoPackage (multi-layer), GeoTIFF, LAZ
Gesamte Eingangsdaten ~350 MB
Ingestierte STAC-Items 35
Ingestierte Vektor-Features 367 219
H3-7 Vektorpartitionen 3 709
Reparierte Geometrien 0 (OSM-Quelle ist sauber)
Ablehnungen 1 (leere coastline Shapefile — Dresden ist Binnenland)
Wall-Clock-Zeit (ohne LAZ) ~55 s
Wall-Clock LAZ → COPC (118 MB → 97 MB) ~5 min inkl. Upload über Port-Forward

Katalog

Kenngröße Wert
Collections 1 (gelaende-umwelt)
Items 35 (33 vector, 1 raster, 1 pointcloud)
BBox-Query-Latenz (stac-fastapi, 30 Items) < 100 ms

Serving

Kenngröße Wert
TiTiler /cog/info Latenz 200 – 400 ms (S3 range-request auf COG-Overviews)
TiTiler Tile 256×256 100 – 300 ms
DuckDB SELECT COUNT(*) über 367 k Features < 500 ms
DuckDB ST_Intersects BBox über 367 k Features ~1.5 s
DuckDB DDL-Abweisung HTTP 400 mit "write/DDL keywords forbidden"

Ausgeschlossen aus PoC-Gate-1

Per PHASE-0-ROADMAP.md:

  • NF-01 – NF-04 Performance-Benchmarks (Phase 1 Ende)
  • F-21 OGC-Dienste WMS/WFS (Phase 2)
  • F-22 Vektorkacheln (Phase 2)
  • F-23 Rollenbasierte Zugriffskontrolle (Phase 2)
  • NF-10 Audit-Logging (Phase 2)
  • Bestandsaufnahme aller 4 Domänen (Phase 2 mit realen Stakeholdern)
  • R-12 Compliance-Audit + NF-11 (pausiert, Produktivmigration)

Verbleibende Arbeit bis produktives Phase-1-Gate

Punkt Status
Prefect Orchestrierung — Server + Flow live ✅ Strang F (Smoke grün)
Ingestion-Container-Image (damit Flows nicht lokal laufen müssen) ⏳ Dockerfile vorhanden, K8s Work-Pool + Worker-Deployment noch offen
Scheduled Triggers (Cron) + Retry-Policies in Produktion ⏳ Phase 2
ADR-007 final: DuckDB für alles vs. Spark-Ergänzung ⏳ offen
ADR-005 final: Iceberg / Delta / kein Tabellenformat ⏳ offen
Technischer Katalog (Lineage-Backend) ⏳ offen
KMZ unzip-Step ⏳ geringe Priorität

Erklärung zur Akzeptanz

PoC-Scope-Gate-1: Bestanden — alle 7 Kriterien erfüllt, sämtliche Smoke-Tests grün. Dokumentation vollständig. Die Plattform kann beliebige OGR/GDAL-lesbare Geodaten aufnehmen, in eine gemeinsame Zonenarchitektur standardisieren, räumlich-zeitlich katalogisieren und über SQL + Tile-API zur Verfügung stellen — auf lokalem k3s + RustFS + GitHub-CI.

Die in Verbleibende Arbeit aufgelisteten Punkte sind für den produktiven Phase-1-Abschluss (§9 des Spezifikationsdokuments) relevant, nicht für das PoC-Gate.

Freigabe-Empfehlung: Übergang in Strang F (Prefect-Orchestrierung) + laufende Anbindung realer Datenlieferanten über das bestehende CLI. Re-Evaluation der produktiven Phase-1-Kriterien, sobald ein realer Datenlieferant über Prefect-Scheduling angebunden ist.

Freigabe durch: Marco Sciaini + Johannes Schlund — Co-Owners