54 KiB
GeoIntel TODO
Actief RC-programma: Belgie en de Belgische Noordzee
docs/RC_ROADMAP_BELGIUM_NORTH_SEA.md is vanaf 2026-07-17 het enige actieve
releasebord. Mol en de Kempen blijven regressiereferenties, maar de
productscope is nu heel Belgie plus de juridisch correct gelabelde Belgische
maritieme zones.
- RC-0: Belgische en maritieme scopefreeze vastleggen.
- RC-0: autonome roadmap zonder afzonderlijke RC-12 vastleggen.
- RC-0: deterministisch release-evidence manifest implementeren en draaien.
- RC-1: actuele productiebackup, verificatie en geisoleerde restore bewijzen.
- RC-2: liveness/readiness/capabilities fail-closed en waarheidsgetrouw maken.
- RC-2: verweesde jobs en analysis runs na een procesherstart verzoenen.
- RC-3: expliciete rasterkeuze en temporeel compatibele detectie-QA afdwingen.
- RC-4: aparte nationale bron- en dekkingscontracten implementeren zonder het vaste Sprint 7-providerregister te wijzigen.
- RC-4: expliciete NGI/RBINS-operator en selectiegebonden coverage-API implementeren en lokaal valideren.
- RC-4: Tower fetch-only, canonieke persistence en live browseracceptatie bewijzen.
- RC-4: nationale basisdekking en expliciete coverage-contracten voor Wallonie, Brussel en de Belgische Noordzee via golden areas operationaliseren.
- RC-5: secrets/configuratie/uploadlimieten/immutable deploy en rollback bewijzen.
- RC-6: volledige CI, dependency-audit, containerscan en SBOM toevoegen.
- RC-7: kritieke API-routes concrete responsemodellen geven.
- RC-8: echte frontend- en browser-E2E-releaseflows toevoegen.
- RC-9: loading, toegankelijkheid, widescreen/mobile en performance afronden.
- RC-10: dataretentie, diskdruk en veilige cleanup operationaliseren.
- RC-11: fresh install, upgrade, rollback, releasepakket, tag en live acceptatie afronden.
Een aparte RC-12/soakfase wordt niet uitgevoerd. De relevante fresh-install-, upgrade-, rollback- en runtimebewijzen zijn verplicht opgenomen in RC-5 en RC-11.
Actuele V1-productstatus
Dit is het enige actuele afwerkingsbord. De lange sprint- en voorbereidingslijsten verderop blijven bewaard als historisch bewijs, maar zijn geen open productroadmap meer.
- Open automatisch de volledige Kempen-werkruimte met Mol als snel selecteerbaar werkgebied; een technische project- of regioselectie is niet vereist.
- Kies een begrijpbaar datathema, teken een rechthoek of gebruik het volledige werkgebied en analyseer alle 15 beschikbare thema's uit PostGIS.
- Gebruik voor getekende en handmatig ingevoerde rechthoeken overal
bbox ∩ Area; een bbox rond het volledige werkgebied resolveert naar de exacte persistente Area-geometrie en activeert pas dan de full-Area fast path. - Toon betekenisvolle eenheden en metrieklabels voor oppervlakte, lengte, inwoners, hoogte, scenario's en stationsmetingen; objectaantallen zijn ondersteunend.
- Vergelijk beschikbare historische meetmomenten met een volledige tijdreeks, absolute wijziging, procentuele wijziging en bronbeperking.
- Download vectorresultaten als GeoJSON, rasteranalyses als JSON en historische vergelijkingen als JSON; kopieren blijft voor alle drie mogelijk.
- Ga vanuit een afgeronde analyse rechtstreeks naar de lokale brongebonden Ollama-assistent of naar Downloads en keer terug zonder het zichtbare kaartresultaat of de evolutievergelijking te verliezen.
- Herbereken en bewaar het actieve vector-, raster- of evolutieresultaat server-side voordat Downloads wordt geopend, met traceerbare selectie- en bronmetadata.
- Haal de canonieke regionale werkruimte exact op naam op zodat groei van operator- en benchmarkprojecten de standaard kaartcontext niet kan verdringen.
- Gebruik de operationele lokale YOLO/PyTorch-keten alleen met persisted detecties, GRB-QA en expliciete controlewaarschuwingen.
- Toon in de beeldanalyse alleen operationele luchtbeeldrasters en geen hoogte-, overstromings- of thematische beleidsrasters.
- Draai de volledige applicatie in de beheersbare Unraid-container op poort 1202 met PostGIS, backend, frontend, Ollama-koppeling en modelconfiguratie.
- Archiveer allowlisted benchmark-, kalibratie- en rooktestwerkruimtes om de actieve projectlijst beheersbaar te houden, zonder gegevens of resultaten te verwijderen.
- Verberg technische identifiers, modeldetails en interne statussen achter expliciete technische details en gebruik uniforme Nederlandse taaktaal in kaart-, kwaliteits-, detectie- en segmentatiewerkstromen.
- Begrens de grootste frontendverantwoordelijkheden met afzonderlijke overzichts-, modelbeheer- en kaarthelpermodules zonder gedrag te wijzigen.
- Maak de vijf bestaande officiële beleidsrasters veilig op aanvraag beschikbaar voor elke begrensde selectie in Vlaanderen, met Dataset-cache, semantische metrics en zonder 1.425 vooraf geladen rasters.
Bewuste, niet-blokkerende grenzen:
- Watervolume blijft niet beschikbaar zolang geen gekoppelde bathymetrie, bodemhoogte en onzekerheidsmodel bestaan. Dit is geospatiale correctheid, geen onafgewerkte UI.
- Gebouwdetectie is operationeel maar blijft een controlekandidaat; verdere training gebeurt pas na nieuwe, onafhankelijke reviewdata.
- Een echt SAM/YOLO-seg-model en een trainingsstudio blijven post-V1. De persistente segmentatie- en QA-fundering blijft beschikbaar voor later.
Map-first Mol explorer
- Make the Mol geographic explorer the default workflow.
- Add drag rectangle selection with automatic persisted theme queries.
- Separate exact bbox intersection totals from the bounded map preview.
- Add official Mol GRB roads, water and parcels provisioning support.
- Select, validate and provision official Statbel 2021-2025 population/statistical-sector snapshots for Mol.
- Select, validate and provision official Departement Omgeving 2013-2025 forest snapshots from the 10 m land-use map.
- Define and provision the official 28-municipality Vervoerregio Kempen as the explicit operational regional scope.
- Partition and provision the complete current GRB building theme for all 28 Kempen transport-region municipalities, with resumable source artifacts and one queryable regional PostGIS dataset.
- Provision the remaining regional GRB context themes in bounded partitions: roads, water and parcels.
- Make the complete regional workspace the automatic data context and use municipality/full-region Areas as one spatial filter instead of requiring a region dropdown.
- Reduce end-user noise by moving technical projects, source metadata, QA evidence, provider internals and model diagnostics behind explicit advanced disclosures.
- Default Detection Lab to the configured local YOLO asset and present measured model quality and control requirements honestly.
- Extend official population and land-use time series from Mol to the approved 28-municipality regional scope.
- Make Evolution automatically open an available regional series and distinguish historical themes from current-only snapshots.
- Replace object-count-only map results with semantic PostGIS metrics for hectares, kilometres and inhabitants while retaining counts as supporting evidence.
- Show complete comparable observation timelines and all compatible semantic metric deltas for exact persisted Areas.
- Expand the modern 2013-2025 land-use operator with water, built-function and transport surfaces from the retained official raster.
- Add a source inventory that separates loaded data from audited official follow-up sources.
- Add a local Ollama question window grounded in persisted GeoIntel metrics and installed server models.
- Add a governed depth/bathymetry source before exposing water volume; never infer volume from 2D GRB water geometry.
- Integrate governed Waterinfo/VMM annual station series without presenting point measurements as area-wide water volume.
- Add bounded historical orthophoto acquisition for official 1971-2025 products with a map overlay and no current-GRB QA on old imagery.
- Add BWK/Natura 2000 through an explicit provider/operator contract.
- Expand BWK/Natura 2000 state 2025 from Mol to all 28 approved Kempen municipalities with partitioned source evidence.
- Add a regional VMM flood-hazard operator that provisions official scenario rasters per municipality Area through the canonical API.
- Add annual agricultural-use parcels through an explicit provider/operator contract.
- Extend the official 1778/1873/1969 historical buildings, water and roads series from Mol to the approved regional scope with partitioned source audits.
- Connect a drawn rectangle to bounded official orthophoto acquisition, local configured-YOLO detection and persisted GRB QA.
- Add governed official space-occupation, open-space, population-density, accessibility and service-level rasters with semantic map metrics.
- Add the DOV digital soil map for Mol with exact clipping, source attributes and historical survey limitations.
- Execute the governed thematic-raster operator for every persisted Kempen municipality after the Mol live gate passes.
- Persist one bounded whole-region snapshot per thematic raster so drawn selections can cross municipality boundaries without changing source semantics.
- Generalize the DOV soil-map operator to all 28 approved Kempen municipality partitions with one regional snapshot manifest.
- Add a resumable regional DHMV DTM/DSM operator for all 28 approved Kempen municipality Areas.
- Execute and audit the complete 336-product VMM and 56-product DHMV regional runtime matrices.
- Present municipal DHMV/VMM partitions as logical regional layers and analyse cross-boundary rectangles without a municipality prerequisite.
- Add a read-only source freshness/version audit with explicit publication policies, local integrity checks, operator CLI and compact Status workspace surface.
- Add explicit bounded GRB/orthophoto catalogue release probes using official capabilities and ISO metadata; keep every acquisition separate and operator-controlled.
- Add a governed regional GRB plan -> stage -> checksum-confirmed apply workflow that preserves every previous snapshot.
- Add a fail-closed ALZ publication probe that distinguishes provisional v1/v2 snapshots from the definitive v3 historical edition and never downloads an archive.
- Add a fail-closed Statbel DCAT publication probe that distinguishes population year, sector-geometry year and the 2025 REDEGEO transition without downloading distributions.
- Add a fail-closed Statbel population import preflight with archive/schema/CRS/join/total/baseline checks, retained checksums and explicit ZZZZ accounting before any new Dataset import.
- Add an explicit Statbel population plan -> stage -> named review -> checksum-confirmed apply workflow that preserves every prior annual snapshot.
- Add an explicit definitive ALZ plan -> stage -> named review -> checksum-confirmed apply workflow while keeping v1/v2 campaign snapshots non-importable.
- Extend catalogue probes only to additional sources that publish a stable official edition contract; do not add background polling or infer releases from HTTP dates alone.
Governed source expansion backlog
Implement these in order. Every source must use an explicit operator/provider contract, retain raw checksummed evidence, persist through DatasetService and pass live Mol validation before regional expansion.
P1 - Biologische Waarderingskaart / Natura 2000
- Confirm the official downloadable service/layer/version and licence for the 2025 state.
- Define stable habitat/biotope/value fields and keep BWK valuation separate from Natura 2000 habitat classification.
- Clip in EPSG:31370 to Mol, transform to EPSG:4326 and persist valid polygonal
vector_featureswith source feature ids. - Add hectare metrics per governed class plus unknown/unmapped-class diagnostics; do not invent an annual trend from one state.
- Add source manifest, unit tests, live row/count/geometry audit and map/source-inventory presentation.
P2 - Annual agricultural-use parcels
- Inventory official annual editions and document schema/code-list changes before selecting a comparable year range.
- Retain annual source files and crop code lists; normalize only fields whose meaning is stable across editions.
- Persist separate annual Datasets with hectares by crop/use class and an explicit unstable-parcel-identity limitation.
- Compare area/category totals over time; do not claim parcel lineage where identifiers or boundaries changed.
- Validate Mol first, then partition all 28 Kempen municipalities with completeness/checksum manifests.
P3 - Buildings and Addresses Register
- Define a governed snapshot operator and relation mapping between building unit, building object, address and GRB geometry.
- Keep register lifecycle/status semantics separate from GRB footprint geometry and document match confidence/unmatched rows.
- Add current building-status/address metrics without exposing personal data or treating addresses as households/population.
- Add Mol reconciliation tests and a live mismatch report before regional import.
P4 - Digitaal Hoogtemodel Vlaanderen
- Select official DTM/DSM product, service and native resolution; retain acquisition date and vertical reference.
- Add bounded raster acquisition/clip storage with nodata, CRS, resolution and checksum validation.
- Implement governed elevation, relief and slope statistics in metres/degrees; keep drainage interpretation explicitly derived.
- Do not label terrain/surface height as water depth and do not enable volume from DHMV alone.
P5 - Water depth / bathymetry
- Audit authoritative sources: no public municipality-wide inland bathymetry for Mol was identified; keep permanent waterbody volume unavailable.
- Integrate the separate public VMM fluvial/pluvial flood-hazard depth scenarios without presenting them as bathymetry or current water state.
- Persist scenario identity, source centimetres, normalized metres, WCS checksums, exact Area clipping and positive-depth coverage.
- Expose mapped inundation area, depth statistics and a clearly named maximum-depth area integral with a prohibition on calling it concurrent volume.
- Extend the VMM scenario workflow to the approved regional scope using 28 municipality partitions instead of one unsafe monolithic raster.
- Define waterbody linkage, surface elevation, bottom elevation and uncertainty propagation before adding any volume metric.
- Validate coverage gaps and prohibit extrapolation outside measured/profiled waterbodies.
- Add independent GIS review and golden-volume fixtures before exposing the result to users or Ollama.
This file now starts with the current implementation status. Older preparation/backlog sections are preserved below as historical planning context and should not be treated as the live sprint board without checking docs/CODEX_EXECUTION_LOG.md.
Release hardening status
- Remove Python
datetime.utcnow()deprecation warnings from backend service paths. - Split frontend production build into app, React vendor and MapLibre vendor chunks.
- Enforce Python deprecation warnings as release-readiness failures.
- Fix Docker backend package install order and remove mandatory root
.envdependency. - Add Docker build context ignores for backend and frontend.
- Run Docker/PostGIS live validation on Tower/Unraid.
- Add Unraid Compose template assets with editable ports, storage path and app icon.
- Add single-container Unraid runtime with embedded PostGIS, backend and frontend.
- Remove embedded PostGIS password defaults from all-in-one Docker image metadata.
- Report reused-volume PostgreSQL collation mismatches in live migration smoke.
- Execute Tower PostgreSQL collation reindex/refresh after backup.
Current implementation status
- Make Mol the primary workbench, AOI and operator-sample context while preserving broader Kempen coverage.
- Add a Mol multi-zone operational pack with independent positive holdouts, background control and persisted map-ready AOIs.
- Execute the Mol pack on live Tower/PostGIS with real orthophotos, GRB references, configured YOLO, persisted QA/QC and a zero-building background control.
- Persist and stream the complete official Mol municipality boundary plus all 36,941 clipped GRB buildings through the Map workspace.
- Run a bounded Mol-center raster, tile, configured-YOLO, persisted detection, GRB QA and export workflow on live Tower/PostGIS.
- Separate persisted database layers from available analysis-result overlays with an explicit Map content mode.
- Persist combined Mol operator evidence under the Unraid storage mount so reports survive all-in-one container replacement.
- Visually review Mol Postel and Donk false-positive/false-negative evidence, classify the dominant error modes and only then decide whether another model-training pass is justified.
- Clip detection QA populations to persisted raster/tile coverage and add box-to-footprint matching diagnostics before reconsidering model training.
- Add a coverage-aware Mol multi-zone benchmark report with explicit positive-zone, per-zone collapse, reference-coverage and pure-empty background gates.
- Execute the refreshed coverage-aware Mol operational benchmark against the active local model and record the resulting retain/review decision.
- Align map-driven building QA with footprint IoU
0.25and show measured candidate/match/error metrics instead of calling every detection a building. - Persist paginated false-positive/false-negative operator decisions and expose them in the Quality workspace.
- Bound QA evidence resolution to persisted evidence ids instead of loading complete regional reference datasets.
- Compare confidence
0.10and0.15over independent Mol holdouts; retain0.15because it wins F1 in every positive zone while both pass the empty-background control. - Complete conservative decisions for the generated 48 false-negative and 48 false-positive review cards, validate both roles fail-closed and retain only 15 confirmed model errors.
- Audit the confirmed review evidence against the active corpus and holdouts; reject retraining because it provides zero novel leakage-free labels.
- Backend FastAPI foundation, health endpoint and service structure.
- React/TypeScript frontend foundation and MapLibre workbench.
- Map layer visibility, opacity and feature property inspection.
- Selected project area/AOI map overlay with visibility and opacity controls.
- SQLAlchemy/PostGIS ORM models and Alembic migration chain through Sprint 9.
- Dataset upload, storage metadata and vector feature persistence.
- Raster metadata and raster operation service boundaries.
- Vector operation service boundaries and fixture-backed tests.
- Provider registry skeleton for GRB, OSM, manual and fixture providers.
- Detection Lab foundation, persistence, GeoJSON output and QA integration.
- Configured-YOLO optional dependency strategy and local preflight.
- Segmentation Lab foundation, persistence, GeoJSON output and QA integration.
- QA/QC golden benchmark fixtures and script.
- Run QA/QC golden benchmark from the main readiness gate.
- Verify browser-facing demo QA/QC metrics against the golden baseline.
- Explicit offline demo workflow seed for project, AOI, fixture datasets and persisted QA metrics.
- Project-scoped QA/QC result listing and frontend QA/QC Results panel.
- Persisted export foundation for vector/detection/segmentation GeoJSON and project metadata JSON.
- Lightweight HTML project report artifact export.
- V1 readiness handoff summary in project metadata/report exports.
- Browser-facing demo/export workflow smoke script with connected V1 state checks.
- Compact V1 workbench status strip for project, AOI, datasets, map, QA/QC and exports.
- Dry-run-first demo export artifact cleanup tooling.
- Browser-facing default workbench state smoke for the offline demo project.
- Browser-facing workbench interaction backing-state smoke and stable UI test anchors.
- Backend API contract audit comparing implemented FastAPI routes with
docs/API_CONTRACTS.md. - Live Docker/PostGIS validation on Tower/Unraid.
- Real YOLO compatibility smoke with optional AI extras and local model file.
- Detection and segmentation workflow hook extraction beyond Sprint 10.
- Export and QA/QC workflow hook extraction beyond Sprint 10.
- Dataset, raster and vector workflow hook extraction beyond Sprint 10.
- Dataset detail, raster controls and vector controls component decomposition.
- QA/QC results and map workspace component decomposition.
- Docker Compose port/storage/database configuration via
.envdefaults for Unraid. - Single-container
geointelUnraid compose/template runtime. - Export preview component decomposition and HTML report download-only UX hardening.
- Provider, change-detection and map-workspace orchestration hook decomposition.
- Project/area/dataset cross-load orchestration hook decomposition.
- Demo workflow orchestration hook decomposition.
- Final
App.tsximport/encoding cleanup and size audit. - Optional final bootstrap-effect extraction.
- Decide next V1 stabilization focus: golden dataset expansion or frontend visual polish backlog.
- Expand golden QA/QC benchmark coverage across partial, perfect, no-overlap and MultiPolygon scenarios.
- Improve workbench shell visual polish, mobile navigation density and AI result readability.
- Improve Map workspace layer provenance, empty guidance and selected-feature summary readability.
- Add Data/Map mobile visual polish for upload forms, action grids and map toolbar density.
- Add AI Labs mobile visual polish for model cards, lab forms and result tables.
- Add Export/System mobile visual polish for export actions and provider capability cards.
- Add inspector mobile polish for dataset metadata, raster/vector tools and action groups.
- Add export preview readability polish for large JSON/GeoJSON handoff artifacts.
- Add accessibility focus polish for primary workbench keyboard navigation.
- Add raster/vector operation form readability polish for dense tool panels.
- Add compact loading/error/empty/result state polish across QA, exports and AI labs.
- Add compact shell density polish for topbar context, mobile navigation and workspace skip flow.
- Add Overview workspace panel hierarchy polish for readiness and recommended-action regions.
- Add Data workspace selected-summary and panel density polish.
- Add Map workspace panel hierarchy and layer-control density polish.
- Add selected map feature extraction with highlight, property table, copy and GeoJSON download.
- Add operational GIS map workflow with road basemap, persisted database layer selection and AOI/layer
vector_featuresquery run. - Add basemap policy notice and guided GIS query-to-QA/export workflow in the Map workspace.
- Add reusable latest-result mode for repeated Map QA/QC runs without duplicate derived artifacts.
- Add opt-in Docker/Unraid AI build/runtime path for local PyTorch/Ultralytics YOLO operation.
- Surface configured-YOLO runtime preflight status through the API and Detection Lab UI.
- Add read-only local model asset catalog and Detection Lab model-file selection.
- Add live model asset detection workflow smoke for configured-YOLO runtime/provenance validation.
- Add one-click full GIS workflow action for query, derived dataset, QA/QC and export handoff.
- Add QA/QC workspace result hierarchy and filter density polish.
- Add Change Detection panel hierarchy and analysis workspace density polish.
- Add calm workbench layout pass to reduce duplicate navigation, heavy card styling and shell density.
- Add Data and Map usability layout pass with compact catalog cards and map-first spatial review.
- Add QA/QC and Exports usability layout pass with calmer evidence review and handoff artifact scanning.
- Add AI Labs Detection/Segmentation hierarchy and result density polish.
- Add Export/System handoff hierarchy and provider registry density polish.
- Add widescreen and ultrawide workbench breakpoints for the map-first GIS workflow.
- Add operator-provided real raster/reference detection + QA workflow smoke.
- Validate the configured building model on a real georeferenced Kempen orthophoto/GeoTIFF with persisted reference vectors and QA/QC metrics.
- Fix configured-YOLO mixed-case class labels so
Buildingmodel output matchesbuildingdomain filters. - Persist CRS metadata in raster tile manifests so AI detections can be transformed to WGS84 GeoJSON correctly.
- Add real-data detection calibration sweep tooling for confidence-threshold and QA/QC metric comparison.
- Add calibration QA evidence export tooling for false-positive/false-negative inspection artifacts.
- Add real-data detection quality matrix tooling for model/tile/threshold comparison.
- Add reproducible Geel/Mol/Turnhout operator sample preparation and multi-sample quality matrix tooling.
- Run first Geel/Mol/Turnhout persisted detection quality baseline.
- Add and benchmark a stronger
yolov8sbuilding-segmentation runtime model candidate. - Add operator-only tile-level YOLO dataset export with overlapping windows and deterministic negative tile retention.
- Train and benchmark the first tile-level local YOLO candidate on Tower through the persisted QA/QC matrix.
- Calibrate confidence, IoU and model selection against additional local orthophoto/reference samples beyond Geel/Mol/Turnhout.
- Add negative/background AOIs to the operator sample corpus and train an expanded local tile-level YOLO candidate.
- Add a hard-negative model-quality pass with sparse/background AOIs and explicit false-positive scoring.
- Train a hard-negative-balanced YOLO candidate and rerun dense QA plus background false-positive matrices.
- Benchmark an external remote-sensing YOLOv8l building candidate as an explicit local model asset.
- Train and gate the
uniquehardneg160e50YOLOv8s candidate through 7 positive AOIs and 9 hard-negative/background samples. - Train and gate an AOI-scale
aoi512e80YOLOv8s candidate to test the 160px training-scale hypothesis. - Raise configured-YOLO
max_detthroughYOLO_MAX_DETECTIONSso dense AOIs are not capped at 300 detections before QA/QC. - Rerun live dense-AOI calibration after redeploy with
YOLO_MAX_DETECTIONS=1000; Westerlo reached 523/1000 detections at lower thresholds and Turnhout reached 822/1000, confirming the old 300 cap is removed. - Add configured-YOLO cross-tile duplicate suppression and raw/suppressed calibration evidence fields.
- Rerun live dense-AOI calibration after redeploy with
YOLO_DUPLICATE_IOU_THRESHOLD=0.5; Westerlo 0.25 improved to F10.2537313432835821and Turnhout 0.25 improved to F10.14114114114114112, but the candidate remains rejected. - Add
OPERATOR_YOLO_MIN_LABEL_VISIBLE_RATIOso the next overlapping-tile dataset can drop tiny clipped edge-fragment labels. - Add operator-only larger-AOI sample prep flags so the next training dataset is not limited to one 512x512 tile per documented sample.
- Regenerate Tower AOI1024 operator samples with paged GRB references and verify no dense reference sample is capped at 1000 features.
- Export and audit AOI1024 clean-label variants; select
yolo-building-aoi1024-visible050-minpx8as the first audit-passing 512px training candidate. - Train and gate
geointel-building-yolov8s-aoi1024clean512e50-ptthrough seven positive AOIs and nine hard-negative/background AOIs. - Train and gate background-aware
geointel-building-yolov8s-aoi1024bg512r3e50-pt; it is the strongest positive-AOI candidate so far but remains inactive because full background-candidate false-positive pressure still blocks default promotion. - Add explicit operator detection profiles for local model assets and promote the expanded-AOI balanced review profile at threshold
0.15after positive and pure-empty split-background gates passed. - Add pure-empty versus sparse-building contextual background corpus classification to operator manifests, hard-negative matrix filters and YOLO tile provenance.
- Add a split background-corpus matrix runner and report builder that runs pure-empty and sparse-context matrices separately.
- Teach the model promotion report to consume split background summaries so only
pure_empty_negativeblocks default promotion andsparse_building_contextstays review-only. - Add one-command operator workflow to run split background matrices and immediately build the split-aware promotion report.
- Add preflight-only validation for the split-background promotion workflow before long runtime matrices.
- Rerun split background matrices on Tower after rebuild, then recalibrate against the cleaner pure-empty gate plus separate sparse-context inspection matrix.
- Add guarded promoted-candidate activation helper requiring a promotion report path and exact candidate key before
.envcan be changed. - Add per-sample YOLO dataset audit diagnostics for parsed labels, median box area, small-box share and AOI-specific warning codes.
- Add deterministic visual YOLO label QA contact sheets before spending more CPU on another training run.
- Filter no-data/low-variance pure-empty negative tiles from operator YOLO exports before the next training run.
- Regenerate the AOI1024 cleanpx YOLO dataset with low-variance negative filtering and rerun visual contact-sheet QA before training.
- Train one inactive candidate from the filtered AOI1024 cleanpx YOLO dataset and gate it through the positive-AOI plus split-background promotion workflow; reject it because mean positive F1 remains below gate.
- Add deterministic dataset/base/trained-model SHA256 provenance to future operator training summaries.
- Review per-AOI false-negative evidence, expand positive sample/label coverage and verify the resulting candidate improves false-negative rate in every validated AOI.
- Complete rebuild/restart and browser/runtime smoke for the guarded promoted V1 building detector activation.
- Expand focused small-building training evidence after reviewing persistent false negatives, train one inactive candidate and pass it through positive, pure-empty and fixed-reference promotion evidence before guarded activation.
- Audit the promoted model's increased false-positive load from persisted seven-AOI QA evidence, including geodetic area buckets, AOI-qualified tile hotspots and combined review GeoJSON.
- Add persisted detection provenance, stratified visual contact sheets and an explicit manual-decision gate for false-positive review.
- Visually classify representative false-positive evidence from Turnhout, Herentals and Geel and review the remaining 5,838 persistent false negatives before any further model training; do not start another blind run.
Sprint 8 status
- Detection foundation ORM and migration
- Detection model registry capability stubs
- Detection run service boundary
- Detection API foundation
- Detection Lab UI foundation
- Segmentation Lab foundation
- Configured YOLO local preflight
- Real YOLO/PyTorch model compatibility smoke
0. Repository Foundation
- Repo mappenstructuur voorbereiden
- Productdocumentatie voorbereiden
- Architectuurdocumentatie voorbereiden
- Codex build plan voorbereiden
- Masterprompt voorbereiden
- Init git repository
- Voeg echte backend scaffold toe
- Voeg echte frontend scaffold toe
1. Backend Foundation
- FastAPI app aanmaken
- Config systeem aanmaken
- Database connectie voorbereiden
- SQLAlchemy models toevoegen
- Alembic migrations toevoegen
- Health endpoint toevoegen
- Tests voor health endpoint toevoegen
2. Database / PostGIS
- Docker compose met PostgreSQL/PostGIS
- PostGIS extensie activeren
- projects tabel
- areas tabel
- datasets tabel
- analysis_runs tabel
- detections tabel
- quality_checks tabel
- exports tabel
- spatial indexes
3. Frontend Foundation
- React + TypeScript scaffold
- Routing
- Layout met sidebar
- API client
- Project pages
- Map Workbench basis
- Map layer controls
- Feature property inspector
- Selected area display
4. Project & Area API
- POST /projects
- GET /projects
- GET /projects/{id}
- POST /projects/{id}/areas
- GET /projects/{id}/areas
- GeoJSON validatie
5. Dataset Manager
- Upload endpoint
- Storage paths
- Raster metadata extraction
- Vector metadata extraction
- Dataset list UI
- Dataset detail UI
6. Raster Core
- Rasterio metadata reader
- Raster preview generation
- Clip raster by area
- Tile raster by area
- Save tile metadata
7. Vector Core
- GeoPandas importer
- CRS detection
- CRS transformation
- Geometry validation
- Clip vector by area
- Store features in PostGIS
8. Reference Data
- OSM fetcher als fallback
- GRB integration research verwerken in code
- Reference dataset cache
- Reference layer viewer
9. Detection Lab
- YOLO wrapper
- Model config
- Inference job
- Pixel bbox naar geo polygon
- Detections opslaan
- Detection UI
- GeoJSON export
10. QA/QC Lab
- Spatial matching
- IoU berekening
- Precision/recall/F1
- False positive layer
- False negative layer
- QA dashboard
- QA export foundation
11. Segmentation Lab
- Segmentation service design
- Mask artifact path convention
- Polygonize masks
- Segmentatiekaartlaag
12. Change Detection
- Compare two runs
- Added/removed objects
- Change stats
- Change layer
13. Tests
- Unit tests GIS helpers
- API tests
- DB/migration smoke tests
- Raster fixture tests
- Vector fixture tests
- QA/QC tests
14. Portfolio Release
- Demo dataset voorbereiden
- Demo workflow documenteren
- Screenshots toevoegen
- README portfolio sectie
- Full smoke test
Repo preparation additions
- Add Data Catalog.
- Add Analysis Specifications.
- Add QA/QC Specification.
- Add Raster Operations Specification.
- Add Vector Operations Specification.
- Add Detection Pipeline Specification.
- Add Segmentation Pipeline Specification.
- Add Change Detection Specification.
- Add UI Page Specifications.
- Add Storage Architecture.
- Add Demo Scenarios.
- Add Development Rules.
- Add Codex phase prompts.
Recommended first Codex build sequence
- Phase 1: Backend foundation using
docs/CODEX_PHASE_1_PROMPT.md. - Phase 2: Dataset Manager using
docs/CODEX_PHASE_2_PROMPT.md. - Phase 3: Detection + QA/QC skeleton using
docs/CODEX_PHASE_3_PROMPT.md.
M2 Engineering Package
- Add ADR decision records.
- Add RFC placeholders for future modules.
- Add API/database/event contracts.
- Add model registry and class catalogs.
- Add queue architecture.
- Add acceptance matrix and test catalog.
- Add Codex M2 build prompts.
- Start Codex Pass 01 backend foundation.
M4 Autonomous Build Readiness
- Add M4 autonomous build readiness document.
- Add M4 sprint board.
- Add module build contracts.
- Add acceptance test catalog.
- Add API example responses.
- Add job lifecycle contract.
- Add frontend state and route contracts.
- Add backend service IO contracts.
- Add model registry seed specification.
- Add demo fixture manifest.
- Add Codex autonomous runbook.
- Add Codex pass prompts.
- Add Geel demo fixtures.
Next M5 Preparation
- Add concrete SQL migration snippets for every core table.
- Add OpenAPI YAML draft.
- Add frontend component prop contracts.
- Add backend unit-test skeleton files.
- Add frontend test skeleton files.
- Add live data connector research notes with verified endpoints.
M5 Operational Readiness Checklist
- CI/CD specification added.
- Healthcheck contracts added.
- Observability plan added.
- Troubleshooting runbook added.
- Rollback and recovery plan added.
- Security checklist added.
- Geospatial validation rules added.
- Build governance added.
- Codex pass documents added.
- Smoke scripts added.
- M6: implement actual backend foundation.
- M6: implement database migrations.
- M6: implement frontend shell.
M8 Codex Day-1 Readiness
- Add Day 1 master prompt.
- Add pass-by-pass Day 1 prompts.
- Add autonomy boundaries.
- Add failure recovery playbook.
- Add quality gate matrix.
- Add operator checklist.
- Add smoke script scaffold.
- Let Codex execute Day 1 implementation passes.
M10 Ultra Preparation
- Add autonomous build charter.
- Add Codex start-here guide.
- Add M10 master autonomous prompt.
- Add pass sequence.
- Add geometry and CRS contracts.
- Add error taxonomy.
- Add feature flag strategy.
- Add model adapter guide.
- Add QA/QC matching algorithm.
- Add frontend state machine.
- Add implementation ticket index and tickets.
- Add API example payloads.
- Add final pre-Codex checklist.
Current Workbench UI
-
Replace the accumulated shell overrides with a coherent premium presentation layer while preserving V1 behavior.
-
Group navigation into Workspace, Analyze and Deliver and make the inspector an optional drawer.
-
Fix mobile navigation so the active workspace uses the full viewport width.
-
Bound populated Project, Dataset, QA, AI and Export panels so long histories do not push core actions thousands of pixels down-page.
-
Move Data create/upload forms and Map/AI diagnostics into explicit progressive disclosures.
-
Reorder AI Labs around run controls and Map around layer selection plus the MapLibre canvas.
-
Harden detection QA coverage and matching diagnostics before any further model training.
-
Replace the one-page workflow panel stack with a task-based workbench shell.
-
Add persistent project/AOI/dataset/layer context.
-
Move selected dataset details into a persistent inspector.
-
Deploy the shell refactor to Tower and run live browser smoke on port 1202.
-
Polish Data, Map and AI Labs workspaces.
-
Polish QA/QC and Exports workspaces.
-
Add selected-object inspector detail tabs for project, AOI, dataset, QA check, export and AI run context.
-
Improve map/dataset selection ergonomics from the workbench canvas and inspector.
-
Improve populated Data/Exports readability after a demo workflow run.
-
Improve live visual shell width, scroll behavior and Map workspace layout at 1280px.
-
Add export history filtering controls for long-running demo environments.
-
Add a safe export retention/cleanup command for demo environments.
-
Add a live dry-run maintenance smoke for demo export cleanup.
-
Add browser screenshot artifact automation for visual regression handoff.
-
Add backend error-envelope audit for expected user-error paths.
-
Expand golden datasets beyond the original single building QA fixture pair.
-
Add workbench visual polish pass for command bar, panel surfaces, empty states and mobile nav density.
-
Add map/result overlay ergonomics for active layer provenance and feature property summaries.
-
Add export/report handoff polish for artifact readiness, action grouping and export provenance.
-
Polish lightweight HTML project report readability, print styling and handoff sections.
-
Add Map empty-state quick actions for ready vector datasets.
-
Add Data catalog role-density polish for reference/candidate/source scanning.
-
Add Data catalog action polish for map, metadata, export and QA affordances.
-
Add QA/QC handoff polish for candidate/reference context and persisted results.
-
Add QA/QC metric card polish for precision, recall, F1, IoU and error counts.
-
Add mobile overflow hardening for workbench navigation, inspector and long QA identifiers.
-
Add QA/QC result filtering and density controls for long-running demo projects.
-
Add Overview workflow guidance for the V1 project -> data -> map -> QA/AI -> export path.
-
Audit populated demo workflow and tighten complete-state Overview guidance copy.
-
Make Overview workflow rail Map/Export clicks preserve useful dataset context.
-
Add latest handoff artifact cards to the Export Center for report, metadata and GeoJSON outputs.
-
Add QA/QC evidence drilldown for selected checks, false-positive/negative evidence and provenance JSON.
-
Add raster pipeline readiness and guardrail surfaces for metadata, CRS, preview, tile manifest and clip-AOI handoff.
-
Add useful default dataset context so Data, Map and Exports are immediately usable after project/demo load.
-
Make raster tile handoff to Detection Lab auto-select the configured YOLO run form.
-
Add AI Lab run-readiness checks for Detection and Segmentation before job submission.
-
Add AI Lab action guardrails so explicit fixture models are not exposed as normal operator runs.
-
Add persisted vector area selection from the Map workspace with bbox extract and GeoJSON download.
-
Persist map area selections as Export Center handoff artifacts.
-
Persist map area selections as reusable derived vector datasets indexed into
vector_features. -
Add Map workspace QA/QC shortcut for saved derived selection datasets.
-
Add Map workspace QA/QC evidence drilldown handoff for saved selection comparisons.
-
Persist QA/QC feature-level evidence for matches, false positives and false negatives.
-
Render persisted QA/QC feature-level evidence as Map workspace overlays.
-
Add safe local YOLO model env configuration helper for Unraid/Tower runtime activation.
-
Harden configured YOLO inference for single-band raster tiles and wrapped runtime errors.
-
Add operator-only YOLO dataset export and local training-smoke wrapper for real sample calibration.
-
Train/evaluate a small local GeoIntel building-detector smoke from the current operator samples and reject it because QA/QC did not improve.
-
Add operator-only tile-level YOLO dataset export with overlapping windows and deterministic negative tile retention.
-
Run tile-level training on Tower and accept/reject the resulting local model through the persisted QA/QC matrix.
-
Train/evaluate a YOLOv8s hard-negative local building-detector candidate on Tower and keep it inactive because hard-negative false positives remain.
-
Add an operator-facing local model catalog/activation workflow with SHA256, active model status and explicit threshold guidance.
-
Block silent local model asset auto-selection in Detection Lab.
-
Add structured raster tile manifest handoff into Detection Lab with linked preflight visibility.
-
Add full threshold calibration comparison UX so detection runs can compare candidate thresholds before promotion.
-
Add guided in-app detection calibration runner for explicit threshold sweeps.
-
Link guided calibration rows to the QA evidence map.
-
Add guided calibration summary export from the Detection Lab.
-
Allow the evidence bundle script to consume Detection Lab calibration summary exports.
-
Add a local browser-summary QA evidence bundle smoke using mocked canonical evidence responses.
-
Add a multi-AOI calibration evidence portfolio convention for model-review handoff.
-
Run the first live multi-AOI calibration evidence portfolio on Tower for Geel, Mol and Turnhout.
-
Run fresh positive-AOI matrix coverage for Balen, Herentals and Westerlo.
-
Preserve model/tile provenance in calibration evidence bundle summaries.
-
Prevent same-threshold calibration evidence responses from overwriting each other in multi-model portfolios.
-
Add a model promotion decision report that combines positive-AOI score with hard-negative false-positive pressure.
-
Train and reject a YOLOv8s hard-negative r8 partial candidate after 12 CPU epochs through the full positive/background promotion gate.
-
Finish and reject the full YOLOv8s hard-negative r8 e60 candidate through the same promotion gate.
-
Add more AOIs after the tile-level baseline so the next local model attempt is not limited to Geel/Mol/Turnhout.
-
Add negative/background AOIs so the next tile dataset is not all positive tiles.
-
Improve positive training coverage/label quality before the next higher-capacity model attempt; simply extending the same hardneg r8 run is not enough.
Sprint 146 - Operator YOLO dataset quality audit
- Add a dataset/label-quality audit for generated operator YOLO tile datasets.
- Report sample coverage, validation coverage, repeated hard-negative pressure and YOLO label area integrity.
- Wire the audit script into the readiness syntax gate.
- Use live audit output to decide whether the next model pass needs more positive AOIs, label cleanup or unique hard negatives.
- Add more unique background/hard-negative AOIs before repeating hard-negative-balanced YOLO training.
- Supersede
yolo-building-tile-expanded160only with audited AOI1024 corpora; no repeat-heavy r4/r8 dataset became a default. - Regenerate Tower operator samples, export a new unique-hard-negative tile dataset and rerun the dataset audit before training.
Sprint 147 - Unique hard-negative AOI expansion
- Expand the documented operator background candidates from 3 to 9 unique AOIs.
- Keep every new background AOI explicit,
allow_empty_reference=True, andsample_role='background_candidate'. - Add test coverage for minimum background candidate count, unique centers and regional spread.
- Prepare the new samples on Tower and build a fresh hard-negative tile dataset.
- Rebuild Tower all-in-one image so the newly copied operator scripts are available inside
/app/scriptswithoutdocker cp. - Fix YOLO preflight CLI so it respects Tower
.envruntime configuration. - Train a new inactive AOI1024 YOLOv8s candidate with visible-label filtering.
- Fix the all-in-one/compose Nginx upload limit after live 1024px GeoTIFF uploads hit
413 Request Entity Too Large. - Fix the all-in-one/compose Nginx proxy timeout after low-threshold persisted YOLO/QA runs hit
504 Gateway Timeout. - Rerun the previously failing Geel low-threshold persisted QA/QC path for
geointel-building-yolov8s-aoi1024visible025e50-ptafter redeploying upload/timeout fixes. - Finish remaining AOI1024 positive-sample matrix coverage for
geointel-building-yolov8s-aoi1024visible025e50-pt. - Run AOI1024 background/hard-negative matrix for
geointel-building-yolov8s-aoi1024visible025e50-pt. - Fix promotion-report parsing for
multi_sample_quality_summary.jsoninputs. - Generate AOI1024 promotion report and keep recommended candidate as
none. - Add GRB paging before trusting dense reference exports as full ground truth.
- Regenerate Tower AOI1024 operator samples with paged GRB references, then re-export and audit labels before any new training attempt.
- Improve AOI1024 label quality before retraining:
yolo-building-aoi1024-cleanpx12vis035now auditsokwith 14,632 labels,min_label_px=12,min_label_visible_ratio=0.35, median normalized box area0.001373291015625and small-box share0.0. - Train and reject
geointel-building-yolov8s-aoi1024cleanpx12vis035e50-ptthrough the positive/background promotion gate. - Keep every local YOLO candidate inactive until positive-AOI and hard-negative promotion reports recommend default activation.
Sprint 181 - Complete Mol municipality workspace
- Persist the official VRBG municipality boundary for Mol (NIS
13025). - Page, deduplicate and boundary-clip the complete GRB GBG building layer.
- Import municipality layers through the existing DatasetService and VectorFeatureService path, with no direct provider-to-database write.
- Prefer the complete municipality workspace on a fresh session while keeping the lightweight boundary as the initially rendered layer.
- Make GeoJSON bounds calculation safe for municipality-scale layers.
- Acquire and tile a georeferenced raster only for an explicitly selected Mol analysis zone before running the next configured-YOLO validation.
Sprint 182 - Municipality viewport delivery and bounded AI handoff
- Stop downloading municipality-scale vector datasets as one frontend GeoJSON payload.
- Deliver large persisted layers through the existing PostGIS bbox endpoint from zoom level 14.
- Report visible/total counts and explicit truncation instead of silently hiding omitted features.
- Preserve complete loading and auto-fit behavior for small vectors and persisted AI/QA overlays.
- Allow the real raster/detection/QA operator smoke to reuse the definitive Mol project.
- Link operator raster/reference uploads to the persisted analysis Area and keep their names distinct from municipality-wide layers.
- Execute the bounded Mol-Centrum configured-YOLO/QA workflow in the deployed runtime and retain its persisted ids as release evidence.
Sprint 171 - Positive AOI expansion and small-building recovery
- Reject cross-model false-negative comparisons when reference populations differ.
- Add explicit Olen, Lille, Oud-Turnhout and Kasterlee positive training AOIs.
- Preserve Turnhout, Retie, Westerlo and Arendonk-heide as manifest-backed validation holdouts.
- Make the tile exporter reject unknown validation samples and holdout leakage.
- Refresh the full AOI1024 operator manifest on Tower and fetch only missing AOIs.
- Export and audit a low-minimum-label dataset without changing the active model.
- Render and inspect a sample-balanced label contact sheet before training.
- Finish the inactive expanded-minpx4 candidate and run the full promotion gate.
- Export the focused 23-sample minpx3 corpus with independent Vosselaar/Grobbendonk validation and external Turnhout/Retie/Westerlo holdouts.
- Train, audit and guarded-activate the focused small-building candidate only after all persisted promotion gates passed.
Sprint 199 - Reviewed accuracy expansion and fail-closed challenger
- Add six complete training-only AOIs outside every protected Mol/Kempen holdout.
- Page and audit 9,964 new GRB building references with municipality and CRS provenance.
- Export and visually inspect the 252-tile, 79,192-label reviewed-accuracy corpus.
- Train one inactive 20-epoch YOLOv8s challenger from the active local model without downloads.
- Rerun active and challenger models on identical coverage-aware reference populations.
- Confirm positive-zone F1 improvement in all seven holdouts.
- Reject challenger activation because Postel-bos produced two detections while the active model remained at zero.
- Update the recommended UI profile with the current active model's coverage-aligned evidence.
- Collect new training-only hard negatives matching the two Postel-bos errors before another challenger attempt.
Sprint 212 - Platform-wide official source portfolio
- Rebalance official source planning across six platform domains.
- Distinguish operational ready Datasets from audited but unimplemented sources.
- Reduce Sources workspace noise through domain summaries and progressive disclosure.
- Add official space, soil, mobility, population, service, climate and economy candidates.
- Replace the water-first recommendation with a cross-domain implementation wave.
- Implement the governed Flemish thematic-raster registry for space occupation, open space, population density, node value and service level.
- Add the digital soil map through DatasetService and VectorFeatureService.
Sprint 224 - Governed GRB evolution
- Audit all eight retained regional GRB snapshots for complete official source identities and geometry-hash fallbacks.
- Validate old governed snapshots through authoritative, complete and approved operator provenance before enabling object-level comparison.
- Make future regional GRB imports reject missing official OGC identities.
- Persist explicit identity schemes and collection prefixes on new GRB snapshots.
- Show precise daily edition ranges and explain registration-date nuance in the Evolution workspace.
- Document refresh readiness across the complete official-source portfolio.
- Verify and add the governed ALZ catalog probe against the official campaign-snapshot and definitive-archive publication contract.
- Add a read-only orthophoto preflight for product variant, official edition, exact WCS selected-area domain and deterministic flight-year points.
- Keep orthophoto pixel refresh manual through a separate
plan-stage-review-apply flow that retains the passed preflight identity and
creates a new immutable Dataset with official
YYYY.NNsource version.
Bathymetry follow-up
- Add governed municipality partition orchestration for all of Flanders after the Mol VHA operator passes live acceptance.
- Add read-only MDK WCS capability/TLS probe and maritime scope metadata.
- Add bounded MDK GeoTIFF acquisition only after live CRS, LAT, nodata and response-limit validation. Current official endpoint is blocked by TLS hostname mismatch and unavailable capabilities; never bypass verification.
- Add SPW staged-download adapter with mDNG metadata and survey-epoch coverage validation.
- Add authoritative territorial-sea, EEZ and continental-shelf boundary layers with legally accurate labels.
- Add vertical-datum conversion only when authoritative transforms and uncertainty tests exist; never merge TAW, LAT and mDNG implicitly.
- Add water volume only when bed and water-surface inputs share a governed time, datum and coverage contract.