Complete live Mol register validation
GeoIntel CI / docs-smoke (push) Canceled after 0s
GeoIntel CI / contract-smoke (push) Canceled after 0s

This commit is contained in:
Codex
2026-07-15 17:36:33 +02:00
parent e9db219a80
commit 0e36d750c0
6 changed files with 126 additions and 10 deletions
+71
View File
@@ -8613,3 +8613,74 @@ Next:
- Implement P3 Buildings and Addresses Register through a governed snapshot
operator, preserving register lifecycle semantics separately from GRB
footprint geometry and excluding personal data.
## Sprint 206 - Governed Buildings and Addresses Register snapshot (2026-07-15)
Implemented:
- Added `scripts/provision_buildings_addresses_register.py` for the official
Digitaal Vlaanderen `Gebouw`, `Gebouweenheid` and `Adres` OGC API Features
collections. It retains raw pages and SHA256 checksums, uses retries and
limits, clips exactly in EPSG:31370 and persists only through DatasetService.
- Added service-window-safe pagination. Live audit proved that the address
collection omitted `next` after 52,000 bbox rows while offset 52,000 still
returned data. The first incomplete snapshot was rejected and transactionally
removed; the corrected operator continued with `startIndex` to a short final
page at 52,110 rows.
- Kept building lifecycle status separate from GRB footprint evidence. Official
building-unit relations use `GebouwObjectId`; address relations are accepted
only for an exact unambiguous unit position or unambiguous building
containment. Ambiguous and unmatched relations remain diagnostics.
- Persisted building polygons with aggregate relation counts only. Full address,
street, house-number and box-number fields remain in restricted raw operator
evidence and never enter queryable feature properties.
- Added exact footprint, lifecycle, unit, address-status and GRB-match metrics.
Fixed filtered `feature_count` execution without changing the existing
unfiltered count contract.
- Added Map and Sources presentation. The exact Mol Area prefers the register;
another municipality and the full Kempen scope retain complete regional GRB.
Evidence paths and manifest reuse are isolated by Area key and boundary hash.
Live evidence:
- Source bbox acquisition completed with 111,696 buildings (112 pages), 67,239
building units (68 pages) and 52,110 addresses (53 pages), with zero duplicate
source ids. Exact Mol clipping retained 43,945 buildings and 23,788 addresses.
- Dataset `c3a47680-cea1-406c-aebb-8ebfa8d7a359` is the only ready Mol register
snapshot for 2026-07-15. It has one DatasetVersion, 43,945 vector rows,
43,945 distinct source ids, SRID 4326, polygonal geometry only and zero invalid
geometries.
- Lifecycle counts are 37,159 realized, 14 under construction, 155 planned,
22 not realized and 6,595 historical buildings. Exact footprint area is
502.1434 ha.
- Aggregate relations contain 30,382 building units, 21,388 linked addresses
and 19,513 addresses in use. There are 1,687 ambiguous and 713 unmatched
address positions. Queryable properties contain zero prohibited address
label/number fields.
- GRB reconciliation produced 36,588 matched, 5 review, 664 ambiguous and 6,688
unmatched register buildings. There are 353 GRB footprints without a confirmed
target and 329 duplicate-target groups. Realized-building match rate is
98.4526%; total register match rate is lower because historical and other
lifecycle records are retained.
- Live exact-Area API returned all eleven governed metrics. Browser validation
confirmed Mol register selection, Geel GRB fallback, readable metric/warning
output, source inventory, MapLibre rendering, no horizontal overflow and no
browser console warnings/errors.
Validation evidence:
- Full local readiness passed backend compilation, 656 backend tests, one
Alembic head, frontend TypeScript typecheck/build and shell syntax gates.
- Tower deployment passed all-in-one health, PostGIS 3.6 migration/schema smoke,
frontend proxy and icon verification.
Known limitations:
- This is a current continuously updated snapshot, not a fabricated historical
series. GRB remains the complete regional geometry source outside Mol.
- Address counts are not households, dwellings, residents or population.
Building footprint is ground area, not floor area, height or volume.
- Ambiguous address links, duplicate GRB targets and review/unmatched geometry
remain explicit evidence for later regional expansion; no nearest match is
forced.
Next:
- Implement P4 Digitaal Hoogtemodel Vlaanderen with a governed DTM/DSM product,
vertical reference, bounded raster storage and measured elevation/slope
statistics. Do not infer water depth or volume from terrain height alone.
+4 -1
View File
@@ -136,7 +136,7 @@ checksum conflict with an existing annual Dataset fails closed.
Buildings and Addresses Register snapshot evidence lives under:
```text
storage/operator-evidence/buildings-addresses-register/mol/{observed-date}/
storage/operator-evidence/buildings-addresses-register/{area-key}/{observed-date}/
raw/
buildings_page_*.json
building_units_page_*.json
@@ -153,6 +153,9 @@ counts and classified GRB reconciliation only. It enters PostGIS exclusively
through DatasetService and ordinary `vector_features`; the operator never
writes database rows directly. The manifest binds all raw pages, the normalized
artifact, exact Area boundary and every GRB partition used for reconciliation.
The Area key is deterministic (`mol`, `geel`, and so on). Reuse also requires
the same Area label, observation date and boundary checksum, preventing one
municipality's evidence from being imported under another Area.
Offline demo export artifacts can be inspected and cleaned with:
+4 -4
View File
@@ -53,10 +53,10 @@ pass live Mol validation before regional expansion.
### 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.
- [x] Define a governed snapshot operator and relation mapping between building unit, building object, address and GRB geometry.
- [x] Keep register lifecycle/status semantics separate from GRB footprint geometry and document match confidence/unmatched rows.
- [x] Add current building-status/address metrics without exposing personal data or treating addresses as households/population.
- [x] Add Mol reconciliation tests and a live mismatch report before regional import.
### P4 - Digitaal Hoogtemodel Vlaanderen