feat(scope): make Belgium and North Sea operational default
GeoIntel release gates / Compile, test, contracts and builds (push) Canceled after 0s
GeoIntel release gates / Python and npm vulnerability policy (push) Canceled after 0s
GeoIntel release gates / GIS image, SBOM and container scan (push) Canceled after 0s

This commit is contained in:
Codex
2026-07-22 02:11:48 +02:00
parent 46884cbbc9
commit 0aff8e3b8c
61 changed files with 2499 additions and 194 deletions
+35 -16
View File
@@ -123,7 +123,7 @@ a canonical operational workspace without depending on its position among
newer operator or benchmark projects:
```text
GET /api/v1/projects?name=Kempen%20Regional%20Workbench&limit=1
GET /api/v1/projects?name=Belgium%20and%20North%20Sea%20Workbench&limit=1
GET /api/v1/projects?status=archived&limit=50
```
@@ -135,7 +135,7 @@ Request:
{
"name": "Geel building detection demo",
"description": "Detect buildings and validate against GRB",
"region": "Kempen"
"region": "Belgium and Belgian North Sea"
}
```
@@ -1202,13 +1202,15 @@ Returns object-detection model capability descriptors.
### GET `/api/v1/detection/model-assets`
Returns local runtime model files discovered in the configured model directory.
This is a read-only catalog. GeoIntel never downloads, creates, mutates or
deletes model weights from this endpoint.
Returns governed local runtime model files. This is a read-only catalog.
GeoIntel never downloads, creates, mutates or deletes model weights from this
endpoint.
The backend scans `YOLO_MODELS_DIR` (default `/app/models`) and reports
supported local model files such as `.pt`, `.onnx` and `.engine`. The active
model is the file matching `YOLO_MODEL_PATH`.
The backend scans `YOLO_MODELS_DIR` (default `/app/models`). When
`YOLO_MODEL_PATH` resolves to an existing file, production catalog output is
restricted to that explicitly approved active model. When no active model is
configured, supported `.pt`, `.onnx` and `.engine` files remain visible for
development/operator discovery but cannot make the configured detector ready.
Response data:
@@ -1226,8 +1228,8 @@ Response data:
"size_bytes": 123456,
"sha256": "sha256hex",
"active": true,
"status": "available",
"limitation_message": "Local runtime model asset. GeoIntel will not download or mutate model weights.",
"status": "approved",
"limitation_message": "Approved local runtime model asset. GeoIntel will not download or mutate model weights.",
"will_download_models": false
}
],
@@ -2217,9 +2219,11 @@ sets an explicit Ollama context window and returns
Returns the governed bathymetry source registry in the canonical envelope.
VHA inland profiles are `operational`. MDK Belgian Continental Shelf is
`probe_only`. The pinned SPW Walloon bathymetry archive is `operational`
through a bounded, explicit operator import. There is no browser-side source
fetch and no arbitrary source URL.
`not_configured` by default and becomes `operational` only after the operator
explicitly enables bounded acquisition and pins a coverage identifier. The
pinned SPW Walloon bathymetry archive is `operational` through a bounded,
explicit operator import. There is no browser-side source fetch and no
arbitrary source URL.
### GET `/api/v1/projects/{project_id}/datasets/bathymetry/sources/mdk_bcp_bathymetry/readiness`
@@ -2227,9 +2231,24 @@ Runs one bounded, read-only WCS 1.0.0 `GetCapabilities` request with mandatory
system TLS verification and a configured response-size limit. Status is one
of `disabled`, `invalid_configuration`, `tls_error`,
`endpoint_unavailable`, `invalid_capabilities` or `reachable`. A reachable
response lists coverage identifiers, advertised formats and CRS values, but
always returns `acquisition_supported=false`. There is no insecure TLS
fallback and no `GetCoverage` request.
response lists coverage identifiers, advertised formats and CRS values. There
is no insecure TLS fallback and this readiness endpoint never performs a
`GetCoverage` request.
### POST `/api/v1/projects/{project_id}/datasets/bathymetry/mdk/acquire`
Runs one explicit, bounded WCS 1.0.0 `GetCoverage` acquisition as a synchronous
Job. The request contains an EPSG:4326 `bbox`, optional persisted `area_id` and
`force_refresh`. Acquisition is fail-closed unless
`MDK_BATHYMETRY_ACQUISITION_ENABLED=true`, a coverage identifier is explicitly
configured, the strict-TLS readiness probe is reachable and that identifier is
advertised by the live capabilities document.
The configured bbox-area, response-size, timeout and pixel-dimension limits are
always enforced. A successful GeoTIFF is validated and imported through the
existing Dataset raster flow with request hash, response hash, acquisition
time, MDK attribution and the `LAT` vertical reference in provenance. No depth
values are synthesized and no water volume is inferred.
### POST `/api/v1/projects/{project_id}/datasets/bathymetry/profiles/acquire`
+28
View File
@@ -11011,3 +11011,31 @@ Validation:
passed (12 tests);
- live redeployment and a repeated Belgium-scale rectangle follow on the
immutable patch revision.
## 2026-07-22 - National scope and governed Brussels land cover
Implemented:
- made the persisted Belgium/North Sea project the unconditional startup
workspace and changed the initial basemap extent and form defaults from Mol
to Belgium plus its legally labelled maritime scope;
- retained Mol/Kempen provisioning and tests strictly as golden regression
evidence instead of product routing;
- live-validated the UrbIS WFS `Blocks` contract and added bounded land-cover,
FO/GB forest/park and WB permanent-water products with clipped PostGIS area
metrics and source-class provenance;
- restricted the production model picker to the explicit active model asset
and surfaced that the current building model is locally, not nationally,
validated.
Validated during implementation:
- backend compile and frontend typecheck passed;
- 31 frontend unit tests passed;
- focused national coverage, model catalog, project lifecycle and Mol golden
regression tests passed;
- live resolver checks covered Brussels, Wallonia and all three Belgian
maritime legal zones. WALOUS, Walloon flood analytics and multi-epoch marine
bathymetry remain real open source-integration work and were not simulated.
- the final repository readiness gate passed with 1,084 backend tests, 31
frontend unit tests, compile, typecheck, production build, Alembic head
`202607160001` and all script syntax/contract checks.
+8 -12
View File
@@ -1,6 +1,6 @@
# GeoIntel data coverage status
Status date: 2026-07-21
Status date: 2026-07-22
This document is the operational interpretation of the source registry. It
does not replace the legal/source provenance stored with each Dataset.
@@ -27,7 +27,7 @@ coverage or historical dates.
| Belgium | NGI administrative boundaries; Statbel population/statistical sectors | Statbel population 2021-2025 |
| Flanders | GRB buildings, roads, water and parcels; DHMV terrain/surface; VMM flood scenarios; BWK/Natura 2000; DOV soil; policy rasters for space, open space, accessibility and services; agriculture and orthophoto where governed | Population 2021-2025; land-use/land-cover series where retained; agriculture editions; historical maps/orthophotos where the selected product has a real observation date |
| Wallonia | Bounded PICC buildings, roads and hydrography; governed SPW bed-elevation/bathymetry products | No general cross-theme regional history yet |
| Brussels | Bounded UrbIS buildings, street axes and cadastral parcels | No general cross-theme regional history yet |
| Brussels | Bounded UrbIS buildings, street axes, cadastral parcels and Land Cover blocks; official FO/GB blocks provide forest/park area and WB blocks provide permanent water area | No general cross-theme regional history yet; the live WFS has no per-feature observation date |
| Belgian North Sea | RBINS reporting units; Marine Spatial Plan 2026-2034; governed MDK bathymetry only when runtime acquisition is explicitly configured | No multi-epoch bathymetry or marine-plan trend yet |
Mol and the Kempen are golden regression areas. Their persisted partitions are
@@ -46,22 +46,18 @@ applicable bounded official source or reports the theme as unsupported.
retain their model scenario semantics separately from observed floods.
Official record:
`https://geoportail.wallonie.be/catalogue/14084108-2c7b-4091-b62d-ff0fc235213a.html`.
3. Add the public UrbIS Land Cover product (regional situation 2024) for
Brussels through its official WFS/download contract. Keep it separate from
cadastral parcels and buildings. Product specification:
`https://urbisdownload.datastore.brussels/UrbIS/TechSpec/LandCover_TechSpec_FR20240401.pdf`.
4. Add a common Belgium-wide topographic baseline with normalized theme
3. Add a common Belgium-wide topographic baseline with normalized theme
semantics across NGI, Flanders, Wallonia and Brussels.
5. Govern comparable Walloon and Brussels historical editions before exposing
4. Govern comparable Walloon and Brussels historical editions before exposing
evolution for buildings, roads, land cover, soil, elevation or flood risk.
6. Add nationally comparable land-cover history with explicit class crosswalks
5. Add nationally comparable land-cover history with explicit class crosswalks
and uncertainty; never compare incompatible legends silently.
7. Add multi-epoch marine bathymetry and survey-footprint metadata before
6. Add multi-epoch marine bathymetry and survey-footprint metadata before
presenting seabed evolution.
8. Expand persisted raster partition manifests beyond the regression regions
7. Expand persisted raster partition manifests beyond the regression regions
only where repeated use justifies caching; bounded acquisition remains the
default for one-off selections.
9. Add source freshness probes only for publishers with stable official edition
8. Add source freshness probes only for publishers with stable official edition
contracts. Do not infer a new observation from an import or HTTP date.
## Acceptance rules for a new source
+11 -5
View File
@@ -15,9 +15,12 @@ runtime source of truth.
- Buildings, population, terrain, imagery, nature, agriculture, soil and flood
themes may report `partial`, `not_configured` or `unsupported` outside the
materialized source partitions. The UI and exports retain that state.
- Belgian North Sea planning/reporting boundaries are materialized. Continuous
authoritative bathymetry acquisition remains `not_configured`; VHA profile
observations are not presented as a seabed model or water volume.
- Belgian North Sea planning/reporting boundaries are materialized. Bounded
strict-TLS MDK WCS acquisition is implemented but stays disabled until the
operator enables `MDK_BATHYMETRY_ACQUISITION_ENABLED` with a coverage id that
the live readiness probe advertises. Until then the theme reports
`not_configured`; VHA profile observations are not presented as a seabed
model or water volume.
- Official endpoints can be temporarily unavailable. Bounded acquisition fails
closed and never substitutes fixture or fabricated production data.
@@ -47,8 +50,11 @@ runtime source of truth.
trained general model for all Belgian objects or themes.
- PyTorch and Ultralytics are present only in the AI image. No model weights
auto-download. A missing local model reports unavailable.
- Real segmentation models remain placeholders; fixture segmentation is
explicit-only. No SAM or YOLO-seg dependency is installed.
- Local YOLO-seg and SAM segmentation are implemented through the ultralytics
interface but stay `not_configured` until the operator points
`YOLO_SEG_MODEL_PATH`/`SAM_MODEL_PATH` to existing local weights and enables
them explicitly. GeoIntel never downloads segmentation weights automatically;
fixture segmentation remains explicit-only.
## Operations
+29 -3
View File
@@ -57,9 +57,20 @@ Dit is het enige actuele afwerkingsbord. De lange sprint- en
voorbereidingslijsten verderop blijven bewaard als historisch bewijs, maar zijn
geen open productroadmap meer.
- [x] Open automatisch de volledige Kempen-werkruimte met Mol als snel
selecteerbaar werkgebied; een technische project- of regioselectie is niet
vereist.
- [x] Open onvoorwaardelijk de nationale `Belgium and North Sea Workbench`
wanneer die bestaat en start de kaart op Belgische schaal. Mol en de Kempen
blijven alleen snel selecteerbare regressiegebieden.
- [x] Maak UrbIS Land Cover begrensd operationeel voor Brussel: alle Blocks als
landbedekking, FO/GB als bos en park en WB als permanent water, met echte
PostGIS-oppervlaktemetrics en broncodes.
- [ ] Implementeer begrensde WALOUS 2018/2020/2023 rasteracquisitie in
EPSG:3812 met officiële klassen, vergelijkbaarheidscontract en pixelbudget.
- [ ] Implementeer de actuele Waalse overstromingsgevaarkaart als afzonderlijk
scenario-/juridisch contract; gebruik WMS alleen als context tenzij
analytische pixels of vectorgeometrie officieel beschikbaar zijn.
- [ ] Bouw een Belgische AI-validatiematrix met gelabelde golden AOIs in elk
gewest en aan de kust. Tot die matrix slaagt blijft de huidige YOLO-status
expliciet lokaal gevalideerd en controleplichtig.
- [x] Kies een begrijpbaar datathema, teken een rechthoek of gebruik het
volledige werkgebied en analyseer alle relevante thema's uit PostGIS.
Een getekende selectie mag ontbrekende operationele bronproducten begrensd
@@ -109,6 +120,21 @@ geen open productroadmap meer.
Workbench met een compacte navigatierail, vaste contextbalk, taakgerichte
schermen en gevalideerde desktop-, ultrawide- en mobiele layouts.
Post-V1 afwerkingspass (2026-07-19):
- [x] Lokale YOLO-seg- en SAM-segmentatie via de ultralytics-interface: echte
adapters, dynamisch modelregister, tegelmanifest-inferentie, georeferentie
van maskpolygonen, dedupe, geodetische oppervlakte en persistentie. Blijft
fail-closed zonder lokale modelgewichten (`YOLO_SEG_*`/`SAM_*` env).
- [x] Begrensde MDK-bathymetrie-acquisitie (WCS GetCoverage) achter de
bestaande strict-TLS readiness-probe: expliciete opt-in, geadverteerd
coverage-id verplicht, bbox-limiet, GeoTIFF-validatie, LAT-provenance.
Endpoint: `POST /datasets/bathymetry/mdk/acquire`.
- [x] UrbIS-wegassen (`urbisvector:StreetAxes`, live gevalideerd tegen de
UrbIS WFS-capabilities) als begrensd Brussels roads-product met
lengte-metrics; de WFS adverteert geen hydrografielaag, dus Brussels
oppervlaktewater blijft eerlijk `not_configured`.
Bewuste, niet-blokkerende grenzen:
- De begrensde SPW-rasterflow maakt Waalse waterbodemhoogte in mDNG