Initial public release
GeoIntel release gates / Compile, test, contracts and builds (push) Successful in 1m49s
GeoIntel release gates / Python and npm vulnerability policy (push) Successful in 21s
GeoIntel release gates / Production AI image, SBOM and container scan (push) Successful in 5m39s
GeoIntel release gates / Deploy exact gated revision to Unraid (push) Failing after 58m43s

This commit is contained in:
Jens
2026-08-31 21:56:53 +02:00
commit faeb58ef6d
1386 changed files with 263203 additions and 0 deletions
@@ -0,0 +1,297 @@
# Post-RC Data Coverage Roadmap: Belgium And The Belgian North Sea
## Status and purpose
This is the completed autonomous implementation board after `v1.0.0-rc.1`.
It is not an RC-12 phase. The signed `v1.0.0` release remains immutable
evidence; any future work must preserve the frozen API,
persistence, provenance and no-fake-data rules.
The goal is to make the national workbench useful with real data:
1. choose an understandable theme;
2. select a bounded area anywhere in Belgium or the Belgian North Sea;
3. acquire or reuse only governed data that covers that selection;
4. calculate source-appropriate metrics;
5. expose authority, time, licence, coverage and limitations;
6. keep unsupported or unavailable results visibly unavailable.
Mol and the Kempen remain mandatory regression areas. They do not constrain
the geographic implementation.
## Autonomous execution rules
- Read `docs/CODEX_BOOTSTRAP_PROMPT.md` and
`docs/RC_SCOPE_FREEZE_BELGIUM_NORTH_SEA.md` before every resumed pass.
- Never run an unbounded browser-side or application-startup provider fetch.
- Every external endpoint must be allowlisted, strict-TLS and size/time limited.
- Provider output must be staged, validated and persisted through
`DatasetService` and `VectorFeatureService`.
- No source may become `operational` from catalogue evidence alone.
- Do not merge semantically different regional sources into one value.
- Do not create water volume, bathymetry, population, AI or historical values
when the required evidence is absent.
- A failed source or validation gate stops only that source. Other independent
phases may continue.
- Update `docs/CODEX_EXECUTION_LOG.md`, `docs/TODO.md`, relevant source/API
docs and this roadmap after every completed gate.
## Global validation gate
Run after every implementation phase:
```bash
python -m compileall backend/app
cd backend && python -m pytest
cd frontend && npm run test:unit
cd frontend && npm run typecheck
cd frontend && npm run build
bash scripts/run_readiness_check.sh
cd backend && python -m alembic heads
cd backend && python -m alembic upgrade head --sql
bash -n scripts/live_migration_smoke.sh
```
When Docker/Tower is available:
```bash
docker compose config
curl --fail http://192.0.2.10:1202/health/ready
bash scripts/run_rc8_release_journeys.sh \
http://192.0.2.10:1202 \
artifacts/post-rc-release-journeys \
artifacts/post-rc-golden-areas.json
```
No phase is complete when compile, tests, typecheck, build, migration or the
applicable live bounded journey fails.
## P0 - Existing national layers become usable
**State: complete; live national and maritime source journeys proven.**
### Work
- Add understandable map themes for administrative context, maritime planning
and marine reporting/legal context.
- Match persisted `ngi_adminvector`, `rbins_marine_reporting_units` and
`rbins_msp_2026` datasets explicitly; do not rely on filename substrings.
- Automatically select the first operational theme when the previous/default
theme has no matching dataset in the active workspace.
- Add source-appropriate selection summaries. Administrative polygon area may
be reported in hectares; overlapping marine use zones must not be summed as
unique sea area.
- Make workbench readiness distinguish stored context/reference layers from
actually analyzable themes.
- Add frontend and backend regression tests and verify the live national and
North Sea workspaces without console errors.
### Exit
- Belgium land opens with a usable NGI administrative theme.
- The Belgian North Sea opens with usable legal/reporting and marine-plan
themes.
- Drawing or selecting a bounded area produces persisted-source results with
provenance.
- An unavailable buildings/population/bathymetry source remains unavailable.
## P1 - National Statbel population
**State: complete; reviewed 2021-2025 national series materialized live.**
### Work
- Extend the existing governed Statbel plan-stage-review-apply flow with a
national scope that uses the persisted Belgium boundary.
- Keep the 2025 REDEGEO old/new geometries separate.
- Validate archive checksums, schema, CRS, sector joins, `ZZZZ` accounting and
national totals before persistence.
- Materialize one immutable national edition through `DatasetService`; bounded
map queries continue to run in PostGIS.
- Expose inhabitants as an area-weighted estimate only when a selection cuts
statistical sectors, with an explicit warning and compatible time-series
keys.
- Never download or replace a release automatically.
### Exit
- A named reviewed plan is required for live apply.
- Belgium, Flanders, Wallonia and Brussels bounded population selections work
from the same authoritative Statbel edition.
- Mol remains within its documented baseline tolerance.
### Live evidence
- Reviewed immutable datasets:
- 2021: `27b2aaba-6ec4-42d8-91c3-9085456b5e7a`;
- 2022: `312e8278-5552-4dd0-abf7-7e1f17d2562a`;
- 2023: `72bfb8a7-9ecb-462d-a622-f8cf693a3cfb`;
- 2024: `e7846fc6-85d1-4120-9442-e62a5b1cd346`;
- 2025: `ee0a46e5-6139-4b0a-93b5-9dabb3b3dfc7`.
- The 2021-2024 editions each retain 19,795 sector geometries. The 2025
REDEGEO edition retains 20,781 sectors and represents all 565 municipalities.
- The 2025 national reconciliation reports 11,825,551 inhabitants, including
7,654 explicitly retained as unlocated rather than silently assigned to
geometry.
- A bounded Mol selection returns an explicitly labelled area-weighted estimate.
## P2 - Wallonia bounded topographic baseline
**State: complete; bounded Wallonia acquisition and analysis proven live.**
### Governed source
SPW PICC ArcGIS REST:
```text
https://geoservices.wallonie.be/arcgis/rest/services/TOPOGRAPHIE/PICC_VDIFF/MapServer
```
Initial allowlisted layers:
- `11`: building footprints;
- `21`: road axes;
- `28`: hydrographic axes;
- `30`: hydrographic surfaces.
### Work
- Add a bounded ArcGIS REST adapter using an EPSG:4326 selection transformed by
the official service to EPSG:3812/4326.
- Enforce maximum selection dimensions, paging, response size, feature count,
strict content type, stable layer identity and source metadata.
- Normalize geometry to EPSG:4326 while retaining provider-native attributes.
- Persist buildings, roads and water as separate immutable datasets.
- Add hectare/kilometre metrics without claiming semantic parity with GRB.
- Expose the products only for Walloon intersections and keep mixed-zone
results split.
### Exit
- The Wallonia golden area can explicitly acquire and analyse all allowlisted
PICC themes.
- Provider failures and record-limit truncation fail closed.
- No direct provider-to-`vector_features` write exists.
### Live evidence
- Dataset `0c3c0a11-c00e-4c84-87be-8ffa64302dec` retained 54 valid building
geometries for the bounded Wallonia smoke selection.
- The persisted selection reported 54 buildings and 0.525363 ha without
extending operational coverage beyond the retained bbox.
## P3 - Brussels bounded UrbIS baseline
**State: complete; bounded Brussels acquisition and analysis proven live.**
### Governed source
Paradigm UrbIS parcels and buildings WFS, discovered and pinned from the
official datastore metadata. The exact service URL and type names must pass a
capabilities probe before implementation is marked operational.
### Work
- Add bounded WFS acquisition for building footprints and cadastral parcels.
- Retain the separate Paradigm and FPS Finance authorities/licences where
applicable.
- Enforce bbox, paging, response size, CRS and geometry validation.
- Persist separate immutable building and parcel datasets.
- Add source-appropriate area/count metrics and Brussels-only coverage.
### Exit
- The Brussels golden area can explicitly acquire and analyse buildings and
parcels.
- Catalogue-only or failed capabilities evidence remains `not_configured`.
### Live evidence
- Dataset `de53ccc0-a494-4c4e-bd0d-16d807bfefe7` retained 47 UrbIS building
geometries for the bounded Brussels smoke selection.
- The persisted selection reported 47 buildings and 0.528894 ha without
claiming coverage outside the retained bbox.
## P4 - Maritime and bathymetry hardening
**State: complete; SPW live persistence and browser acceptance passed for
`v1.0.0`; MDK acquisition remains visibly blocked by strict-TLS evidence.**
### Work
- Keep the current RBINS marine legal/reporting and 2026-2034 planning layers
operational and map-queryable.
- Probe the MDK 20 m LAT product only through strict TLS and retained metadata.
- Implement bounded GeoTIFF acquisition only after CRS, nodata, pixel
semantics, edition, licence and LAT evidence pass.
- Keep depth relative to LAT separate from water-surface elevation and volume.
- SPW mDNG bathymetry remains a separate Walloon inland/navigation source.
- The bounded SPW operator stages the fixed official GeoTIFF archive, validates
its checksum and raster identity, writes a clipped COG through the canonical
Dataset flow and reports only waterbed elevation and surveyed coverage.
### Exit
- Maritime plan and legal/reporting queries are operational.
- Bathymetry is either a governed analytical raster with vertical datum and
uncertainty evidence, or remains visibly `not_configured`.
- No water-volume metric exists without compatible bed and water-surface data.
## P5 - Federation, UX and release evidence
**State: complete; live federation, responsive map UX and release evidence proven.**
### Work
- Make on-demand products depend on the intersected zone, not on a manually
selected technical project.
- Keep cross-region selections split by source and metric semantics.
- Present loaded, available-on-demand, partial, not-configured and unsupported
states in ordinary Dutch language.
- Run land, language-boundary, Brussels, Wallonia, coast and North Sea golden
journeys against live PostGIS.
- Capture source checksums, selected bounds, result metrics, provenance,
performance, browser console/network and responsive screenshots.
- Build, push and deploy one immutable post-RC image only after every applicable
gate is green.
### Final acceptance
- Existing RC behavior remains green.
- At least one real bounded analytical theme is operational for Belgium,
Flanders, Wallonia, Brussels and the Belgian North Sea.
- Population is nationally operational or explicitly blocked by failed source
evidence.
- Buildings/roads/water are operational through the competent regional source
where implemented; no parity claim is made.
- No unavailable theme is presented as measured data.
- The live browser can select an area, acquire/reuse data, analyse it, inspect
provenance and export it without entering a technical project workflow.
### Live evidence
- Immutable AI image `04b8373d7ece0f5eb29674507d718f0ea51ed5c4-ai` passed live
PostGIS migration, browser proxy smoke and the final SPW bathymetry journey.
- The release journey reused all seven deterministic golden Areas and passed
Brussels, Wallonia, language-boundary, coast, Mol, Kempen and North Sea
coverage without creating duplicates.
- National population resolves from the persisted reviewed Statbel 2025
edition; selection-bounded PICC and UrbIS results remain separate governed
regional datasets.
- The live map now keeps persisted sources ahead of on-demand placeholders,
gives the selected Area camera priority and bounds the responsive MapLibre
canvas to its visible grid row. Belgium, Brussels, Wallonia and the North Sea
switched without manual zoom, horizontal overflow or console warnings.
- The evidence manifest retained exact area geometry hashes, coverage states,
temporal forest metrics, a 49-feature persisted export, a grounded Ollama
answer and a configured local-YOLO Job/AnalysisRun with map handoff.
- PyTorch `2.13.0+cpu` and Ultralytics `8.4.99` import in the deployed AI
runtime. No model download or fabricated detection was used.
- The final repository gate passed 1,052 backend tests, 22 frontend tests,
frontend typecheck/build, one Alembic head, the full offline migration SQL
chain and live-smoke syntax.
- MDK bathymetry remains `not_configured` because strict hostname validation
still fails. Marine planning/reporting remains operational and no depth or
water-volume value is fabricated.
- Rectangle-based golden scopes that cross an irregular legal boundary retain
the truthful `outside_supported_scope` warning for the uncovered corners.