Add Belgium and North Sea coverage foundation
This commit is contained in:
@@ -935,6 +935,49 @@ Read simplified job status payload.
|
||||
|
||||
## Provider registry
|
||||
|
||||
The legacy Sprint 7 provider registry remains the exact
|
||||
`grb|osm|manual|fixture` import abstraction. National and maritime source
|
||||
authority is exposed separately so adding official source families cannot
|
||||
silently change that import contract.
|
||||
|
||||
### GET `/api/v1/external/coverage/catalog`
|
||||
|
||||
Returns the normalized Belgium and Belgian North Sea theme vocabulary, legal
|
||||
coverage zones, allowed availability states and audited source contracts.
|
||||
Every source includes authority, native layers, geometry types, acquisition
|
||||
mode, source URL, attribution, licence and limitation text.
|
||||
|
||||
Allowed result states are exactly:
|
||||
|
||||
- `operational`: a matching `ready` Dataset is materialized in the project;
|
||||
- `partial`: the governed integration exists but matching project data is
|
||||
absent or incomplete;
|
||||
- `not_configured`: an audited source has no operational adapter;
|
||||
- `unsupported`: no audited contract supports the theme in that zone.
|
||||
|
||||
### POST `/api/v1/external/coverage/resolve`
|
||||
|
||||
Resolves a user-drawn EPSG:4326 bbox against persisted national and maritime
|
||||
Areas. Cross-region and land/sea selections remain split by zone.
|
||||
|
||||
```json
|
||||
{
|
||||
"project_id": "uuid",
|
||||
"bbox": {
|
||||
"minx": 2.65,
|
||||
"miny": 51.05,
|
||||
"maxx": 2.85,
|
||||
"maxy": 51.20
|
||||
},
|
||||
"themes": ["buildings", "surface_water", "bathymetry"]
|
||||
}
|
||||
```
|
||||
|
||||
The response returns `intersected_zones`, `outside_supported_scope`, one item
|
||||
per zone/theme combination, matching source names and IDs of actually
|
||||
materialized Datasets. An empty `themes` list requests the complete normalized
|
||||
vocabulary. Unknown themes fail with `COVERAGE_THEME_UNSUPPORTED`.
|
||||
|
||||
### GET `/api/v1/external/providers`
|
||||
|
||||
Returns all configured provider capability descriptors.
|
||||
|
||||
@@ -1,5 +1,31 @@
|
||||
## Autonomous RC program for Belgium and the Belgian North Sea (2026-07-17)
|
||||
|
||||
### RC-4 national and maritime coverage foundation
|
||||
|
||||
- Added an independent coverage registry so the exact Sprint 7
|
||||
`grb|osm|manual|fixture` provider contract remains unchanged.
|
||||
- Added `GET /api/v1/external/coverage/catalog` and
|
||||
`POST /api/v1/external/coverage/resolve` with canonical envelopes, normalized
|
||||
themes and explicit project-materialization checks.
|
||||
- Added `provision_belgium_north_sea_scope.py`. It accepts only the official
|
||||
NGI AdminVector archive, RBINS marine reporting units and the exact 15-layer
|
||||
`imsp26` WFS allowlist. It verifies archive/response limits, safe extraction,
|
||||
layer counts, pagination, geometries and SHA256 evidence.
|
||||
- Verified live source contracts from the Codex host: all 15 MSP layers were
|
||||
reachable and returned 101 features in total; the current RBINS reporting
|
||||
units yielded BPNS, territorial sea, EEZ and continental-shelf geometries.
|
||||
- The territorial sea is derived only by unioning official 0-1 nm and 1-12 nm
|
||||
units. EEZ and continental shelf retain the same official offshore geometry
|
||||
as separate records with different legal-domain provenance.
|
||||
- Frontend startup now prefers a materialized
|
||||
`Belgium and North Sea Workbench`; drawn bboxes receive a compact,
|
||||
zone-split coverage matrix. Existing Mol/Kempen workspaces remain available.
|
||||
- Local validation passed 986 backend tests, frontend typecheck/build, the
|
||||
full readiness gate, Alembic head `202607160001`, complete offline migration
|
||||
SQL and live-smoke shell syntax.
|
||||
- Tower fetch-only, persistence, live coverage API and browser acceptance are
|
||||
the remaining RC-4 exit evidence.
|
||||
|
||||
- Froze the RC geography as all Belgian land plus the separately labelled
|
||||
territorial sea, EEZ and continental shelf.
|
||||
- Retained Mol and the Kempen as validated regression areas instead of the
|
||||
|
||||
@@ -719,6 +719,42 @@ the canonical vector persistence path for Mol and Kempen. Additional Flemish
|
||||
vector themes still require governed regional operators; a catalogue record
|
||||
alone never makes them operational.
|
||||
|
||||
## Belgium and Belgian North Sea scope foundation
|
||||
|
||||
The release-candidate workbench uses two distinct registries:
|
||||
|
||||
- the fixed Sprint 7 import-provider registry for `grb`, `osm`, `manual` and
|
||||
`fixture`;
|
||||
- the national coverage registry for audited source authority and actual
|
||||
project materialization by theme and zone.
|
||||
|
||||
The explicit operator
|
||||
`scripts/provision_belgium_north_sea_scope.py` downloads the official NGI
|
||||
AdminVector EPSG:4326 GeoPackage archive, verifies size and archive safety,
|
||||
requires the territory, maritime zone, region, province and municipality
|
||||
layers, and retains archive/GeoPackage/artifact checksums. NGI output is
|
||||
licensed CC BY 4.0 and persists as reference Datasets through
|
||||
`DatasetService`.
|
||||
|
||||
The same operator obtains the RBINS/BMDC
|
||||
`od_nature:marine_reporting_units_2024` WFS layer. The territorial sea is the
|
||||
union of official 0-1 nm coastal waters and 1-12 nm territorial waters. The
|
||||
official offshore-beyond-12-nm geometry is persisted twice only to preserve
|
||||
the distinct legal semantics of the EEZ water column and continental-shelf
|
||||
seabed/subsoil. This is explicit provenance-preserving derivation, not
|
||||
invented geometry.
|
||||
|
||||
The legally current Belgian Marine Spatial Plan 2026-2034 is fetched from the
|
||||
fixed `imsp26` WFS allowlist and retained as one versioned reference Dataset.
|
||||
No live vessel activity, depth, water volume or other unsupported metric is
|
||||
inferred from these plan zones.
|
||||
|
||||
The coverage resolver reports a theme `operational` only when a matching
|
||||
`ready` Dataset exists in the selected project. Implemented acquisition
|
||||
without project materialization is `partial`; Walloon, Brussels, Statbel and
|
||||
MDK families remain `not_configured` until their own bounded adapters and
|
||||
source-specific metric contracts are implemented.
|
||||
|
||||
## Bathymetry, inland profiles and maritime scope
|
||||
|
||||
The official VHA Digital Atlas profile-point layer is the first operational
|
||||
|
||||
@@ -369,6 +369,31 @@ Ondersteund:
|
||||
- GPKG
|
||||
- WFS-resultaten
|
||||
|
||||
### National and maritime coverage contracts
|
||||
|
||||
Belgium-wide and maritime reference Datasets use the same Dataset and
|
||||
VectorFeature entities as every other vector source. No parallel national
|
||||
schema is introduced.
|
||||
|
||||
Required source metadata includes:
|
||||
|
||||
```yaml
|
||||
authority_level: authoritative|official_context|contextual
|
||||
coverage_zones:
|
||||
- belgium|flanders|wallonia|brussels
|
||||
- belgian_north_sea|territorial_sea|exclusive_economic_zone|continental_shelf
|
||||
source_url: https://...
|
||||
attribution: text
|
||||
license_note: text
|
||||
reference_layer_name: normalized_layer_key
|
||||
```
|
||||
|
||||
EEZ and continental-shelf records may have equal horizontal geometry while
|
||||
their `legal_domain` differs. They must remain distinct records. A selected
|
||||
bbox crossing regions or the coast produces zone-specific coverage items;
|
||||
only metrics with compatible source meaning, unit, time and method may be
|
||||
merged.
|
||||
|
||||
Metadata:
|
||||
|
||||
- CRS
|
||||
|
||||
@@ -291,6 +291,11 @@ errors.
|
||||
|
||||
## RC-4 - Belgium and North Sea coverage foundation
|
||||
|
||||
**State: in progress.** The national coverage registry, canonical
|
||||
catalog/resolve API, explicit NGI/RBINS operator, frontend selection matrix and
|
||||
focused safety tests are implemented. Local readiness is green. Tower
|
||||
fetch-only, persistence, live API and browser acceptance remain the phase exit.
|
||||
|
||||
### Work
|
||||
|
||||
1. Persist NGI authoritative Belgium land and administrative scopes.
|
||||
|
||||
@@ -43,8 +43,28 @@ storage/
|
||||
osm/
|
||||
sentinel/
|
||||
dhmv/
|
||||
operator-data/
|
||||
geographic-scopes/
|
||||
belgium-north-sea/
|
||||
adminvector_4326.zip
|
||||
adminvector/
|
||||
adminvector_4326.gpkg
|
||||
belgium_land_boundary.geojson
|
||||
belgium_regions.geojson
|
||||
belgium_provinces.geojson
|
||||
belgium_municipalities.geojson
|
||||
ngi_maritime_zone.geojson
|
||||
marine_legal_scopes.geojson
|
||||
marine_spatial_plan_2026.geojson
|
||||
manifest.json
|
||||
```
|
||||
|
||||
The Belgium/North Sea directory is written only by the explicit
|
||||
`provision_belgium_north_sea_scope.py` operator. The manifest binds every
|
||||
artifact to SHA256, source URL, edition/validity and feature count. Persistence
|
||||
still runs through the ordinary Dataset upload API; operator artifacts are
|
||||
evidence and replay inputs, not an alternate database.
|
||||
|
||||
## Upload policy
|
||||
|
||||
When a file is uploaded:
|
||||
|
||||
@@ -14,6 +14,12 @@ maritieme zones.
|
||||
- [x] RC-2: liveness/readiness/capabilities fail-closed en waarheidsgetrouw maken.
|
||||
- [x] RC-2: verweesde jobs en analysis runs na een procesherstart verzoenen.
|
||||
- [x] RC-3: expliciete rasterkeuze en temporeel compatibele detectie-QA afdwingen.
|
||||
- [x] RC-4: aparte nationale bron- en dekkingscontracten implementeren zonder
|
||||
het vaste Sprint 7-providerregister te wijzigen.
|
||||
- [x] 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, Wallonie, Brussel en Belgische Noordzee via
|
||||
beheerde providers en golden areas operationaliseren.
|
||||
- [ ] RC-5: secrets/configuratie/uploadlimieten/immutable deploy en rollback
|
||||
|
||||
Reference in New Issue
Block a user