1176 lines
80 KiB
Markdown
1176 lines
80 KiB
Markdown
# GeoIntel TODO
|
||
|
||
## PyTorch-modelprogramma
|
||
|
||
Uitvoeringsbord: `docs/PYTORCH_TRAINING_ROADMAP_BELGIUM.md`.
|
||
|
||
- [x] Scheid trainbare beeldtaken van deterministische GIS-analyses.
|
||
- [x] Generaliseer de single-class tile-export op klasse, referentiebron en referentielaag.
|
||
- [x] Laat productietraining fail-closed stoppen wanneer vereiste CUDA ontbreekt.
|
||
- [ ] Materialiseer geografisch gescheiden GRB/PICC/URBIS-gebouwcorpora met temporeel passende orthofoto's.
|
||
- [x] Verwerp de drie V64 Vlaamse kalibratiekandidaten fail-closed na gereproduceerde ruwe en SAM2-contact-sheets; verscherp de geometrische SAM2-gates.
|
||
- [x] Scheid GRB-hoofdgebouwen bron-native van bijgebouwen en bewijs dat ook de hoofdgebouw/SAM-dropvariant de visuele gate nog niet haalt.
|
||
- [ ] Lever onafhankelijke Vlaamse kalibratie-AOI's met aantoonbaar beeldzichtbare daklabels vóór een volgende training.
|
||
- [x] Provision en audit onafhankelijke V66-laagbouwkandidaten in Zutendaal, Zoersel en Landen; verwerp alle automatische labelvarianten na visuele QA.
|
||
- [ ] Laat beeldzichtbare Vlaamse dakboxen onafhankelijk annoteren/reviewen en freeze hun checksums.
|
||
- [ ] Train en evalueer een Belgische gebouwchallenger onafhankelijk; promoveer alleen zonder achtergrondregressie.
|
||
- [ ] Houd zonnepanelen en segmentatie `not_configured` tot gereviewde taaklabels en hold-outs bestaan.
|
||
|
||
## Accuracy-programma — fase 4
|
||
|
||
Normatieve protocollen: `docs/accuracy-program/10-evaluation-protocol.md`,
|
||
`11-baseline-benchmark.md` en `12-release-gates.md`.
|
||
|
||
- [x] Inventariseer 15 geïmplementeerde capabilities in zeven afzonderlijke
|
||
evaluatorfamilies zonder deterministische GIS als geleerd model voor te stellen.
|
||
- [x] Implementeer taakgebonden metrics, raw prediction-retentie,
|
||
betrouwbaarheidsintervallen, subgroepsupport en een machineleesbare
|
||
failure-taxonomie.
|
||
- [x] Genereer zes code-owned splitrollen (`train`, `val`, `calibration`,
|
||
`test`, `background-test`, sealed `challenge`) met exacte, near-duplicate-,
|
||
identiteit-, tijd- en 2-km-leakagegates.
|
||
- [x] Bescherm test/background-test/challenge tegen training, thresholdselectie,
|
||
modelselectie, gewijzigde bytes en onbewezen provenance.
|
||
- [x] Voer de bestaande `QaService` als referentienulmeting uit en leg alle
|
||
Phase-4-evidence content-addressed en immutable vast.
|
||
- [x] Maak statusboekhouding zelfreferentievrij: alleen de actieve-modelprojectie
|
||
beïnvloedt de benchmarkfingerprint; productgates vereisen governed evidence.
|
||
- [ ] Los de bevestigde Phase-3-leakagebevinding op en freeze nieuwe onafhankelijke
|
||
product-splits zonder cross-splitparen onder 2 km.
|
||
- [ ] Lever één governed zeven-taken productbaseline met actuele modelbytes,
|
||
CUDA/GPU-receipt, authorityportfolio en in-process herberekende raw metrics.
|
||
- [ ] Lever checksumgebonden menselijke review, fysieke protected vault en
|
||
representatieve support voor alle 13 kritieke subgroepdimensies.
|
||
- [ ] Markeer fase 4 pas `done` en fase 5 pas `ready` wanneer alle productgates
|
||
in dezelfde workflow `pass` zijn; huidige status is local `pass`, product `fail`.
|
||
|
||
## Actieve post-RC datadekkingsfase
|
||
|
||
Professionaliseringspass (2026-07-27):
|
||
|
||
- [x] Voeg een expliciete gastknop toe aan de toegangspoort en open daarmee
|
||
een korte, projectgebonden demowerkruimte.
|
||
- [x] Geef de demo dezelfde kaart-, bron-, assistent-, model-, analyse-, QA- en
|
||
downloadfuncties als de operator, maar blokkeer beheer, instellingen,
|
||
uploads, reviews en toegang tot andere projecten ook server-side.
|
||
- [x] Herwerk de landingspagina, aanmeldhiërarchie, mobiele navigatie en
|
||
workbenchcontext tot één rustigere en professionelere productervaring.
|
||
- [ ] Consolideer na visuele regressiesnapshots de vier historische
|
||
workbench-stijllagen (`app`, `premium`, `atlas-workbench`,
|
||
`atlas-premium-v2`) tot een kleiner gelaagd stijlsysteem.
|
||
- [ ] Ontwerp alleen bij een toekomstige publieke multi-projectinstallatie een
|
||
volwaardig account-, autorisatie- en tenantisolatiemodel; gastmodus is daar
|
||
uitdrukkelijk geen vervanging voor.
|
||
|
||
- [x] Voeg een interactieve, data-gedreven projectatlas toe aan de statuswerkruimte met toegankelijke navigatie, echte readiness-toestanden en reduced-motion ondersteuning.
|
||
- [x] Geef alle primaire werkruimtes een eigen geanimeerde signaalillustratie, verbeter lege toestanden en verwijder de dubbele kaartfoutmelding bij sessieverval.
|
||
|
||
- [x] Implementeer de aangeleverde Stitch-landingspagina als echte React-
|
||
toegangspoort en bescherm de workbench met één veilig geconfigureerd
|
||
operatoraccount, sessieverval, uitloggen en zichtbare foutstatussen. Dit is
|
||
geen multi-user- of tenantbeheersysteem.
|
||
|
||
`docs/POST_RC_DATA_COVERAGE_ROADMAP_BELGIUM_NORTH_SEA.md` was het autonome
|
||
uitvoeringsbord na `v1.0.0-rc.1` en is nu afgesloten voor `v1.0.0`. Dit is geen
|
||
RC-12. De definitieve release blijft immutable bewijs; verdere databronnen
|
||
zijn post-V1 uitbreidingen.
|
||
|
||
- [x] P0: bestaande NGI/RBINS-lagen als kaartthema en selectieanalyse ontsluiten.
|
||
- [x] P0: readiness baseren op bruikbare analysethema's, niet alleen datasetaantal.
|
||
- [x] P1: nationale Statbel-populatieflow veilig operationaliseren.
|
||
- [x] P2: bounded SPW PICC voor Waalse gebouwen, wegen en hydrographie.
|
||
- [x] P3: bounded UrbIS voor Brusselse gebouwen en percelen.
|
||
- [x] P4: maritieme thema's harden en bathymetrie fail-closed onderzoeken.
|
||
- [x] P5: zonefederatie, UX, golden journeys en immutable deployment.
|
||
|
||
## 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.
|
||
|
||
- [x] RC-0: Belgische en maritieme scopefreeze vastleggen.
|
||
- [x] RC-0: autonome roadmap zonder afzonderlijke RC-12 vastleggen.
|
||
- [x] RC-0: deterministisch release-evidence manifest implementeren en draaien.
|
||
- [x] RC-1: actuele productiebackup, verificatie en geisoleerde restore bewijzen.
|
||
- [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.
|
||
- [x] RC-4: Tower fetch-only, canonieke persistence en live browseracceptatie
|
||
bewijzen.
|
||
- [x] RC-4: nationale basisdekking en expliciete coverage-contracten voor
|
||
Wallonie, Brussel en de Belgische Noordzee via golden areas operationaliseren.
|
||
- [x] RC-5: secrets/configuratie/uploadlimieten/immutable deploy en rollback
|
||
bewijzen.
|
||
- [x] RC-6: volledige CI, dependency-audit, containerscan en SBOM toevoegen.
|
||
- [x] RC-7: kritieke API-routes concrete responsemodellen geven.
|
||
- [x] RC-8: echte frontend- en browser-E2E-releaseflows toevoegen.
|
||
- [x] RC-9: loading, toegankelijkheid, widescreen/mobile en performance afronden.
|
||
- [x] RC-10: dataretentie, diskdruk en veilige cleanup operationaliseren.
|
||
- [x] 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.
|
||
|
||
- [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.
|
||
- [x] Implementeer begrensde WALOUS 2018/2020/2023 rasteracquisitie in EPSG:3812
|
||
met officiële klassen, een expliciete 2018-klassecrosswalk, vergelijkbaarheidscontract,
|
||
pixelbudget, automatische tijdreeksmaterialisatie en evolutiemetrics. De vaste
|
||
officiële 2018-GeoTIFF-distributie is live checksum-gevalideerd; bronwaarde `0`
|
||
wordt expliciet als achtergrond/nodata behandeld.
|
||
- [x] Rond de live provisioning van het officiële SPW MNT 2021-2022 op 1 m in
|
||
de operatorcache af en bied begrensde terreinacquisitie/analyse in DNG aan.
|
||
Het bronraster en de checksum-sidecar zijn gevalideerd en het downloadarchief
|
||
is na veilige extractie verwijderd. De 0,5 m-distributie blijft
|
||
buiten V1 omdat zij geen noodzakelijke analysecapaciteit toevoegt tegenover de
|
||
gevalideerde 1 m-bron en officieel als circa 198 GB download wordt aangeboden,
|
||
exclusief extra werkruimte tijdens extractie.
|
||
- [x] 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
|
||
en met maximaal drie gelijktijdige aanvragen materialiseren; niet-toepasselijke
|
||
of niet-operationele regionale thema's worden niet als ontbrekende meting
|
||
gepresenteerd.
|
||
- [x] 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.
|
||
- [x] Toon betekenisvolle eenheden en metrieklabels voor oppervlakte, lengte,
|
||
inwoners, hoogte, scenario's en stationsmetingen; objectaantallen zijn
|
||
ondersteunend.
|
||
- [x] Vergelijk beschikbare historische meetmomenten met een volledige
|
||
tijdreeks, absolute wijziging, procentuele wijziging en bronbeperking.
|
||
- [x] Download vectorresultaten als GeoJSON, rasteranalyses als JSON en
|
||
historische vergelijkingen als JSON; kopieren blijft voor alle drie mogelijk.
|
||
- [x] 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.
|
||
- [x] Herbereken en bewaar het actieve vector-, raster- of evolutieresultaat
|
||
server-side voordat Downloads wordt geopend, met traceerbare selectie- en
|
||
bronmetadata.
|
||
- [x] Haal de canonieke regionale werkruimte exact op naam op zodat groei van
|
||
operator- en benchmarkprojecten de standaard kaartcontext niet kan verdringen.
|
||
- [x] Gebruik de operationele lokale YOLO/PyTorch-keten alleen met persisted
|
||
detecties, GRB-QA en expliciete controlewaarschuwingen.
|
||
- [x] Toon in de beeldanalyse alleen operationele luchtbeeldrasters en geen
|
||
hoogte-, overstromings- of thematische beleidsrasters.
|
||
- [x] Draai de volledige applicatie in de beheersbare Unraid-container op poort
|
||
1202 met PostGIS, backend, frontend, Ollama-koppeling en modelconfiguratie.
|
||
- [x] Archiveer allowlisted benchmark-, kalibratie- en rooktestwerkruimtes
|
||
om de actieve projectlijst beheersbaar te houden, zonder gegevens of
|
||
resultaten te verwijderen.
|
||
- [x] Verberg technische identifiers, modeldetails en interne statussen achter
|
||
expliciete technische details en gebruik uniforme Nederlandse taaktaal in
|
||
kaart-, kwaliteits-, detectie- en segmentatiewerkstromen.
|
||
- [x] Begrens de grootste frontendverantwoordelijkheden met afzonderlijke
|
||
overzichts-, modelbeheer- en kaarthelpermodules zonder gedrag te wijzigen.
|
||
- [x] 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.
|
||
- [x] Maak de volledige selectieanalyse in Vlaanderen operationeel voor NGI,
|
||
Statbel, GRB, beleidsrasters, DHMV, overstromingsgevaar, BWK, DOV en VHA:
|
||
één rechthoek materialiseert ontbrekende officiële bronproducten, leest
|
||
persistente vector/rastergegevens uit en rapporteert inhoudelijke eenheden.
|
||
- [x] Vervang de gegroeide dashboardpresentatie door de Stitch-gestuurde Atlas
|
||
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
|
||
analyseerbaar. Watervolume blijft niet beschikbaar zolang geen compatibele
|
||
wateroppervlaktehoogte, tijdskoppeling, datumtransformatie 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
|
||
|
||
- [x] Make the Mol geographic explorer the default workflow.
|
||
- [x] Add drag rectangle selection with automatic persisted theme queries.
|
||
- [x] Separate exact bbox intersection totals from the bounded map preview.
|
||
- [x] Add official Mol GRB roads, water and parcels provisioning support.
|
||
- [x] Select, validate and provision official Statbel 2021-2025 population/statistical-sector snapshots for Mol.
|
||
- [x] Select, validate and provision official Departement Omgeving 2013-2025 forest snapshots from the 10 m land-use map.
|
||
- [x] Define and provision the official 28-municipality Vervoerregio Kempen as the explicit operational regional scope.
|
||
- [x] 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.
|
||
- [x] Provision the remaining regional GRB context themes in bounded partitions: roads, water and parcels.
|
||
- [x] 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.
|
||
- [x] Reduce end-user noise by moving technical projects, source metadata, QA evidence, provider internals and model diagnostics behind explicit advanced disclosures.
|
||
- [x] Default Detection Lab to the configured local YOLO asset and present measured model quality and control requirements honestly.
|
||
- [x] Extend official population and land-use time series from Mol to the approved 28-municipality regional scope.
|
||
- [x] Make Evolution automatically open an available regional series and distinguish historical themes from current-only snapshots.
|
||
- [x] Replace object-count-only map results with semantic PostGIS metrics for hectares, kilometres and inhabitants while retaining counts as supporting evidence.
|
||
- [x] Show complete comparable observation timelines and all compatible semantic metric deltas for exact persisted Areas.
|
||
- [x] Expand the modern 2013-2025 land-use operator with water, built-function and transport surfaces from the retained official raster.
|
||
- [x] Add a source inventory that separates loaded data from audited official follow-up sources.
|
||
- [x] Add a local Ollama question window grounded in persisted GeoIntel metrics and installed server models.
|
||
- [x] Add a governed bounded SPW bed-elevation source with explicit mDNG and
|
||
survey-period semantics; never infer depth or volume from 2D water geometry.
|
||
- [ ] Add a compatible water-surface, time, vertical-datum and uncertainty
|
||
contract before exposing water volume.
|
||
- [x] Integrate governed Waterinfo/VMM annual station series without presenting point measurements as area-wide water volume.
|
||
- [x] Add bounded historical orthophoto acquisition for official 1971-2025 products with a map overlay and no current-GRB QA on old imagery.
|
||
- [x] Add BWK/Natura 2000 through an explicit provider/operator contract.
|
||
- [x] Expand BWK/Natura 2000 state 2025 from Mol to all 28 approved Kempen municipalities with partitioned source evidence.
|
||
- [x] Add a regional VMM flood-hazard operator that provisions official scenario rasters per municipality Area through the canonical API.
|
||
- [x] Add annual agricultural-use parcels through an explicit provider/operator contract.
|
||
- [x] Extend the official 1778/1873/1969 historical buildings, water and roads series from Mol to the approved regional scope with partitioned source audits.
|
||
- [x] Connect a drawn rectangle to bounded official orthophoto acquisition, local configured-YOLO detection and persisted GRB QA.
|
||
- [x] Add governed official space-occupation, open-space, population-density, accessibility and service-level rasters with semantic map metrics.
|
||
- [x] Add the DOV digital soil map for Mol with exact clipping, source attributes and historical survey limitations.
|
||
- [x] Execute the governed thematic-raster operator for every persisted Kempen municipality after the Mol live gate passes.
|
||
- [x] Persist one bounded whole-region snapshot per thematic raster so drawn selections can cross municipality boundaries without changing source semantics.
|
||
- [x] Generalize the DOV soil-map operator to all 28 approved Kempen municipality partitions with one regional snapshot manifest.
|
||
- [x] Add a resumable regional DHMV DTM/DSM operator for all 28 approved Kempen municipality Areas.
|
||
- [x] Execute and audit the complete 336-product VMM and 56-product DHMV regional runtime matrices.
|
||
- [x] Present municipal DHMV/VMM partitions as logical regional layers and analyse cross-boundary rectangles without a municipality prerequisite.
|
||
- [x] Add a read-only source freshness/version audit with explicit publication policies, local integrity checks, operator CLI and compact Status workspace surface.
|
||
- [x] Add explicit bounded GRB/orthophoto catalogue release probes using official capabilities and ISO metadata; keep every acquisition separate and operator-controlled.
|
||
- [x] Add a governed regional GRB plan -> stage -> checksum-confirmed apply workflow that preserves every previous snapshot.
|
||
- [x] Add a fail-closed ALZ publication probe that distinguishes provisional v1/v2 snapshots from the definitive v3 historical edition and never downloads an archive.
|
||
- [x] Add a fail-closed Statbel DCAT publication probe that distinguishes population year, sector-geometry year and the 2025 REDEGEO transition without downloading distributions.
|
||
- [x] 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.
|
||
- [x] Add an explicit Statbel population plan -> stage -> named review -> checksum-confirmed apply workflow that preserves every prior annual snapshot.
|
||
- [x] 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
|
||
|
||
- [x] Confirm the official downloadable service/layer/version and licence for the 2025 state.
|
||
- [x] Define stable habitat/biotope/value fields and keep BWK valuation separate from Natura 2000 habitat classification.
|
||
- [x] Clip in EPSG:31370 to Mol, transform to EPSG:4326 and persist valid polygonal `vector_features` with source feature ids.
|
||
- [x] Add hectare metrics per governed class plus unknown/unmapped-class diagnostics; do not invent an annual trend from one state.
|
||
- [x] Add source manifest, unit tests, live row/count/geometry audit and map/source-inventory presentation.
|
||
|
||
### P2 - Annual agricultural-use parcels
|
||
|
||
- [x] Inventory official annual editions and document schema/code-list changes before selecting a comparable year range.
|
||
- [x] Retain annual source files and crop code lists; normalize only fields whose meaning is stable across editions.
|
||
- [x] Persist separate annual Datasets with hectares by crop/use class and an explicit unstable-parcel-identity limitation.
|
||
- [x] Compare area/category totals over time; do not claim parcel lineage where identifiers or boundaries changed.
|
||
- [x] Validate Mol first, then partition all 28 Kempen municipalities with completeness/checksum manifests.
|
||
|
||
### P3 - Buildings and Addresses Register
|
||
|
||
- [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
|
||
|
||
- [x] Select official DTM/DSM product, service and native resolution; retain acquisition date and vertical reference.
|
||
- [x] Add bounded raster acquisition/clip storage with nodata, CRS, resolution and checksum validation.
|
||
- [x] Implement governed elevation, relief and slope statistics in metres/degrees; keep drainage interpretation explicitly derived.
|
||
- [x] Do not label terrain/surface height as water depth and do not enable volume from DHMV alone.
|
||
|
||
### P5 - Water depth / bathymetry
|
||
|
||
- [x] Audit authoritative sources: no public municipality-wide inland bathymetry for Mol was identified; keep permanent waterbody volume unavailable.
|
||
- [x] Integrate the separate public VMM fluvial/pluvial flood-hazard depth scenarios without presenting them as bathymetry or current water state.
|
||
- [x] Persist scenario identity, source centimetres, normalized metres, WCS checksums, exact Area clipping and positive-depth coverage.
|
||
- [x] Expose mapped inundation area, depth statistics and a clearly named maximum-depth area integral with a prohibition on calling it concurrent volume.
|
||
- [x] 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
|
||
|
||
- [x] Remove Python `datetime.utcnow()` deprecation warnings from backend service paths.
|
||
- [x] Split frontend production build into app, React vendor and MapLibre vendor chunks.
|
||
- [x] Enforce Python deprecation warnings as release-readiness failures.
|
||
- [x] Fix Docker backend package install order and remove mandatory root `.env` dependency.
|
||
- [x] Add Docker build context ignores for backend and frontend.
|
||
- [x] Run Docker/PostGIS live validation on Tower/Unraid.
|
||
- [x] Add Unraid Compose template assets with editable ports, storage path and app icon.
|
||
- [x] Add single-container Unraid runtime with embedded PostGIS, backend and frontend.
|
||
- [x] Remove embedded PostGIS password defaults from all-in-one Docker image metadata.
|
||
- [x] Report reused-volume PostgreSQL collation mismatches in live migration smoke.
|
||
- [x] Execute Tower PostgreSQL collation reindex/refresh after backup.
|
||
|
||
## Current implementation status
|
||
|
||
- [x] Make Mol the primary workbench, AOI and operator-sample context while preserving broader Kempen coverage.
|
||
- [x] Add a Mol multi-zone operational pack with independent positive holdouts, background control and persisted map-ready AOIs.
|
||
- [x] Execute the Mol pack on live Tower/PostGIS with real orthophotos, GRB references, configured YOLO, persisted QA/QC and a zero-building background control.
|
||
- [x] Persist and stream the complete official Mol municipality boundary plus all 36,941 clipped GRB buildings through the Map workspace.
|
||
- [x] Run a bounded Mol-center raster, tile, configured-YOLO, persisted detection, GRB QA and export workflow on live Tower/PostGIS.
|
||
- [x] Separate persisted database layers from available analysis-result overlays with an explicit Map content mode.
|
||
- [x] Persist combined Mol operator evidence under the Unraid storage mount so reports survive all-in-one container replacement.
|
||
- [x] 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.
|
||
- [x] Clip detection QA populations to persisted raster/tile coverage and add box-to-footprint matching diagnostics before reconsidering model training.
|
||
- [x] Add a coverage-aware Mol multi-zone benchmark report with explicit positive-zone, per-zone collapse, reference-coverage and pure-empty background gates.
|
||
- [x] Execute the refreshed coverage-aware Mol operational benchmark against the active local model and record the resulting retain/review decision.
|
||
- [x] Align map-driven building QA with footprint IoU `0.25` and show measured candidate/match/error metrics instead of calling every detection a building.
|
||
- [x] Persist paginated false-positive/false-negative operator decisions and expose them in the Quality workspace.
|
||
- [x] Bound QA evidence resolution to persisted evidence ids instead of loading complete regional reference datasets.
|
||
- [x] Compare confidence `0.10` and `0.15` over independent Mol holdouts; retain `0.15` because it wins F1 in every positive zone while both pass the empty-background control.
|
||
- [x] 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.
|
||
- [x] Audit the confirmed review evidence against the active corpus and holdouts; reject retraining because it provides zero novel leakage-free labels.
|
||
- [x] Backend FastAPI foundation, health endpoint and service structure.
|
||
- [x] React/TypeScript frontend foundation and MapLibre workbench.
|
||
- [x] Map layer visibility, opacity and feature property inspection.
|
||
- [x] Selected project area/AOI map overlay with visibility and opacity controls.
|
||
- [x] SQLAlchemy/PostGIS ORM models and Alembic migration chain through Sprint 9.
|
||
- [x] Dataset upload, storage metadata and vector feature persistence.
|
||
- [x] Raster metadata and raster operation service boundaries.
|
||
- [x] Vector operation service boundaries and fixture-backed tests.
|
||
- [x] Provider registry skeleton for GRB, OSM, manual and fixture providers.
|
||
- [x] Detection Lab foundation, persistence, GeoJSON output and QA integration.
|
||
- [x] Configured-YOLO optional dependency strategy and local preflight.
|
||
- [x] Segmentation Lab foundation, persistence, GeoJSON output and QA integration.
|
||
- [x] QA/QC golden benchmark fixtures and script.
|
||
- [x] Run QA/QC golden benchmark from the main readiness gate.
|
||
- [x] Verify browser-facing demo QA/QC metrics against the golden baseline.
|
||
- [x] Explicit offline demo workflow seed for project, AOI, fixture datasets and persisted QA metrics.
|
||
- [x] Project-scoped QA/QC result listing and frontend QA/QC Results panel.
|
||
- [x] Persisted export foundation for vector/detection/segmentation GeoJSON and project metadata JSON.
|
||
- [x] Lightweight HTML project report artifact export.
|
||
- [x] V1 readiness handoff summary in project metadata/report exports.
|
||
- [x] Browser-facing demo/export workflow smoke script with connected V1 state checks.
|
||
- [x] Compact V1 workbench status strip for project, AOI, datasets, map, QA/QC and exports.
|
||
- [x] Dry-run-first demo export artifact cleanup tooling.
|
||
- [x] Browser-facing default workbench state smoke for the offline demo project.
|
||
- [x] Browser-facing workbench interaction backing-state smoke and stable UI test anchors.
|
||
- [x] Backend API contract audit comparing implemented FastAPI routes with `docs/API_CONTRACTS.md`.
|
||
- [x] Live Docker/PostGIS validation on Tower/Unraid.
|
||
- [x] Real YOLO compatibility smoke with optional AI extras and local model file.
|
||
- [x] Detection and segmentation workflow hook extraction beyond Sprint 10.
|
||
- [x] Export and QA/QC workflow hook extraction beyond Sprint 10.
|
||
- [x] Dataset, raster and vector workflow hook extraction beyond Sprint 10.
|
||
- [x] Dataset detail, raster controls and vector controls component decomposition.
|
||
- [x] QA/QC results and map workspace component decomposition.
|
||
- [x] Docker Compose port/storage/database configuration via `.env` defaults for Unraid.
|
||
- [x] Single-container `geointel` Unraid compose/template runtime.
|
||
- [x] Export preview component decomposition and HTML report download-only UX hardening.
|
||
- [x] Provider, change-detection and map-workspace orchestration hook decomposition.
|
||
- [x] Project/area/dataset cross-load orchestration hook decomposition.
|
||
- [x] Demo workflow orchestration hook decomposition.
|
||
- [x] Final `App.tsx` import/encoding cleanup and size audit.
|
||
- [x] Optional final bootstrap-effect extraction.
|
||
- [x] Decide next V1 stabilization focus: golden dataset expansion or frontend visual polish backlog.
|
||
- [x] Expand golden QA/QC benchmark coverage across partial, perfect, no-overlap and MultiPolygon scenarios.
|
||
- [x] Improve workbench shell visual polish, mobile navigation density and AI result readability.
|
||
- [x] Improve Map workspace layer provenance, empty guidance and selected-feature summary readability.
|
||
- [x] Add Data/Map mobile visual polish for upload forms, action grids and map toolbar density.
|
||
- [x] Add AI Labs mobile visual polish for model cards, lab forms and result tables.
|
||
- [x] Add Export/System mobile visual polish for export actions and provider capability cards.
|
||
- [x] Add inspector mobile polish for dataset metadata, raster/vector tools and action groups.
|
||
- [x] Add export preview readability polish for large JSON/GeoJSON handoff artifacts.
|
||
- [x] Add accessibility focus polish for primary workbench keyboard navigation.
|
||
- [x] Add raster/vector operation form readability polish for dense tool panels.
|
||
- [x] Add compact loading/error/empty/result state polish across QA, exports and AI labs.
|
||
- [x] Add compact shell density polish for topbar context, mobile navigation and workspace skip flow.
|
||
- [x] Add Overview workspace panel hierarchy polish for readiness and recommended-action regions.
|
||
- [x] Add Data workspace selected-summary and panel density polish.
|
||
- [x] Add Map workspace panel hierarchy and layer-control density polish.
|
||
- [x] Add selected map feature extraction with highlight, property table, copy and GeoJSON download.
|
||
- [x] Add operational GIS map workflow with road basemap, persisted database layer selection and AOI/layer `vector_features` query run.
|
||
- [x] Add basemap policy notice and guided GIS query-to-QA/export workflow in the Map workspace.
|
||
- [x] Add reusable latest-result mode for repeated Map QA/QC runs without duplicate derived artifacts.
|
||
- [x] Add opt-in Docker/Unraid AI build/runtime path for local PyTorch/Ultralytics YOLO operation.
|
||
- [x] Surface configured-YOLO runtime preflight status through the API and Detection Lab UI.
|
||
- [x] Add read-only local model asset catalog and Detection Lab model-file selection.
|
||
- [x] Add live model asset detection workflow smoke for configured-YOLO runtime/provenance validation.
|
||
- [x] Add one-click full GIS workflow action for query, derived dataset, QA/QC and export handoff.
|
||
- [x] Add QA/QC workspace result hierarchy and filter density polish.
|
||
- [x] Add Change Detection panel hierarchy and analysis workspace density polish.
|
||
- [x] Add calm workbench layout pass to reduce duplicate navigation, heavy card styling and shell density.
|
||
- [x] Add Data and Map usability layout pass with compact catalog cards and map-first spatial review.
|
||
- [x] Add QA/QC and Exports usability layout pass with calmer evidence review and handoff artifact scanning.
|
||
- [x] Add AI Labs Detection/Segmentation hierarchy and result density polish.
|
||
- [x] Add Export/System handoff hierarchy and provider registry density polish.
|
||
- [x] Add widescreen and ultrawide workbench breakpoints for the map-first GIS workflow.
|
||
- [x] Add operator-provided real raster/reference detection + QA workflow smoke.
|
||
- [x] Validate the configured building model on a real georeferenced Kempen orthophoto/GeoTIFF with persisted reference vectors and QA/QC metrics.
|
||
- [x] Fix configured-YOLO mixed-case class labels so `Building` model output matches `building` domain filters.
|
||
- [x] Persist CRS metadata in raster tile manifests so AI detections can be transformed to WGS84 GeoJSON correctly.
|
||
- [x] Add real-data detection calibration sweep tooling for confidence-threshold and QA/QC metric comparison.
|
||
- [x] Add calibration QA evidence export tooling for false-positive/false-negative inspection artifacts.
|
||
- [x] Add real-data detection quality matrix tooling for model/tile/threshold comparison.
|
||
- [x] Add reproducible Geel/Mol/Turnhout operator sample preparation and multi-sample quality matrix tooling.
|
||
- [x] Run first Geel/Mol/Turnhout persisted detection quality baseline.
|
||
- [x] Add and benchmark a stronger `yolov8s` building-segmentation runtime model candidate.
|
||
- [x] Add operator-only tile-level YOLO dataset export with overlapping windows and deterministic negative tile retention.
|
||
- [x] Train and benchmark the first tile-level local YOLO candidate on Tower through the persisted QA/QC matrix.
|
||
- [x] Calibrate confidence, IoU and model selection against additional local orthophoto/reference samples beyond Geel/Mol/Turnhout.
|
||
- [x] Add negative/background AOIs to the operator sample corpus and train an expanded local tile-level YOLO candidate.
|
||
- [x] Add a hard-negative model-quality pass with sparse/background AOIs and explicit false-positive scoring.
|
||
- [x] Train a hard-negative-balanced YOLO candidate and rerun dense QA plus background false-positive matrices.
|
||
- [x] Benchmark an external remote-sensing YOLOv8l building candidate as an explicit local model asset.
|
||
- [x] Train and gate the `uniquehardneg160e50` YOLOv8s candidate through 7 positive AOIs and 9 hard-negative/background samples.
|
||
- [x] Train and gate an AOI-scale `aoi512e80` YOLOv8s candidate to test the 160px training-scale hypothesis.
|
||
- [x] Raise configured-YOLO `max_det` through `YOLO_MAX_DETECTIONS` so dense AOIs are not capped at 300 detections before QA/QC.
|
||
- [x] 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.
|
||
- [x] Add configured-YOLO cross-tile duplicate suppression and raw/suppressed calibration evidence fields.
|
||
- [x] Rerun live dense-AOI calibration after redeploy with `YOLO_DUPLICATE_IOU_THRESHOLD=0.5`; Westerlo 0.25 improved to F1 `0.2537313432835821` and Turnhout 0.25 improved to F1 `0.14114114114114112`, but the candidate remains rejected.
|
||
- [x] Add `OPERATOR_YOLO_MIN_LABEL_VISIBLE_RATIO` so the next overlapping-tile dataset can drop tiny clipped edge-fragment labels.
|
||
- [x] Add operator-only larger-AOI sample prep flags so the next training dataset is not limited to one 512x512 tile per documented sample.
|
||
- [x] Regenerate Tower AOI1024 operator samples with paged GRB references and verify no dense reference sample is capped at 1000 features.
|
||
- [x] Export and audit AOI1024 clean-label variants; select `yolo-building-aoi1024-visible050-minpx8` as the first audit-passing 512px training candidate.
|
||
- [x] Train and gate `geointel-building-yolov8s-aoi1024clean512e50-pt` through seven positive AOIs and nine hard-negative/background AOIs.
|
||
- [x] 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.
|
||
- [x] Add explicit operator detection profiles for local model assets and promote the expanded-AOI balanced review profile at threshold `0.15` after positive and pure-empty split-background gates passed.
|
||
- [x] Add pure-empty versus sparse-building contextual background corpus classification to operator manifests, hard-negative matrix filters and YOLO tile provenance.
|
||
- [x] Add a split background-corpus matrix runner and report builder that runs pure-empty and sparse-context matrices separately.
|
||
- [x] Teach the model promotion report to consume split background summaries so only `pure_empty_negative` blocks default promotion and `sparse_building_context` stays review-only.
|
||
- [x] Add one-command operator workflow to run split background matrices and immediately build the split-aware promotion report.
|
||
- [x] Add preflight-only validation for the split-background promotion workflow before long runtime matrices.
|
||
- [x] Rerun split background matrices on Tower after rebuild, then recalibrate against the cleaner pure-empty gate plus separate sparse-context inspection matrix.
|
||
- [x] Add guarded promoted-candidate activation helper requiring a promotion report path and exact candidate key before `.env` can be changed.
|
||
- [x] Add per-sample YOLO dataset audit diagnostics for parsed labels, median box area, small-box share and AOI-specific warning codes.
|
||
- [x] Add deterministic visual YOLO label QA contact sheets before spending more CPU on another training run.
|
||
- [x] Filter no-data/low-variance pure-empty negative tiles from operator YOLO exports before the next training run.
|
||
- [x] Regenerate the AOI1024 cleanpx YOLO dataset with low-variance negative filtering and rerun visual contact-sheet QA before training.
|
||
- [x] 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.
|
||
- [x] Add deterministic dataset/base/trained-model SHA256 provenance to future operator training summaries.
|
||
- [x] Review per-AOI false-negative evidence, expand positive sample/label coverage and verify the resulting candidate improves false-negative rate in every validated AOI.
|
||
- [x] Complete rebuild/restart and browser/runtime smoke for the guarded promoted V1 building detector activation.
|
||
- [x] 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.
|
||
- [x] 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.
|
||
- [x] 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
|
||
|
||
- [x] Detection foundation ORM and migration
|
||
- [x] Detection model registry capability stubs
|
||
- [x] Detection run service boundary
|
||
- [x] Detection API foundation
|
||
- [x] Detection Lab UI foundation
|
||
- [x] Segmentation Lab foundation
|
||
- [x] Configured YOLO local preflight
|
||
- [x] Real YOLO/PyTorch model compatibility smoke
|
||
|
||
## 0. Repository Foundation
|
||
|
||
- [x] Repo mappenstructuur voorbereiden
|
||
- [x] Productdocumentatie voorbereiden
|
||
- [x] Architectuurdocumentatie voorbereiden
|
||
- [x] Codex build plan voorbereiden
|
||
- [x] Masterprompt voorbereiden
|
||
- [ ] Init git repository
|
||
- [x] Voeg echte backend scaffold toe
|
||
- [x] Voeg echte frontend scaffold toe
|
||
|
||
## 1. Backend Foundation
|
||
|
||
- [x] FastAPI app aanmaken
|
||
- [x] Config systeem aanmaken
|
||
- [x] Database connectie voorbereiden
|
||
- [x] SQLAlchemy models toevoegen
|
||
- [x] Alembic migrations toevoegen
|
||
- [x] Health endpoint toevoegen
|
||
- [x] Tests voor health endpoint toevoegen
|
||
|
||
## 2. Database / PostGIS
|
||
|
||
- [x] Docker compose met PostgreSQL/PostGIS
|
||
- [x] PostGIS extensie activeren
|
||
- [x] projects tabel
|
||
- [x] areas tabel
|
||
- [x] datasets tabel
|
||
- [x] analysis_runs tabel
|
||
- [x] detections tabel
|
||
- [x] quality_checks tabel
|
||
- [x] exports tabel
|
||
- [x] spatial indexes
|
||
|
||
## 3. Frontend Foundation
|
||
|
||
- [x] React + TypeScript scaffold
|
||
- [x] Routing
|
||
- [x] Layout met sidebar
|
||
- [x] API client
|
||
- [x] Project pages
|
||
- [x] Map Workbench basis
|
||
- [x] Map layer controls
|
||
- [x] Feature property inspector
|
||
- [x] 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
|
||
- [x] QA dashboard
|
||
- [x] QA export foundation
|
||
|
||
## 11. Segmentation Lab
|
||
|
||
- [x] Segmentation service design
|
||
- [x] Mask artifact path convention
|
||
- [ ] Polygonize masks
|
||
- [x] Segmentatiekaartlaag
|
||
|
||
## 12. Change Detection
|
||
|
||
- [ ] Compare two runs
|
||
- [x] Added/removed objects
|
||
- [x] Change stats
|
||
- [x] Change layer
|
||
|
||
## 13. Tests
|
||
|
||
- [x] Unit tests GIS helpers
|
||
- [x] API tests
|
||
- [x] DB/migration smoke tests
|
||
- [x] Raster fixture tests
|
||
- [x] Vector fixture tests
|
||
- [x] QA/QC tests
|
||
|
||
## 14. Portfolio Release
|
||
|
||
- [x] Demo dataset voorbereiden
|
||
- [x] Demo workflow documenteren
|
||
- [ ] Screenshots toevoegen
|
||
- [ ] README portfolio sectie
|
||
- [ ] Full smoke test
|
||
|
||
# Repo preparation additions
|
||
|
||
- [x] Add Data Catalog.
|
||
- [x] Add Analysis Specifications.
|
||
- [x] Add QA/QC Specification.
|
||
- [x] Add Raster Operations Specification.
|
||
- [x] Add Vector Operations Specification.
|
||
- [x] Add Detection Pipeline Specification.
|
||
- [x] Add Segmentation Pipeline Specification.
|
||
- [x] Add Change Detection Specification.
|
||
- [x] Add UI Page Specifications.
|
||
- [x] Add Storage Architecture.
|
||
- [x] Add Demo Scenarios.
|
||
- [x] Add Development Rules.
|
||
- [x] 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
|
||
|
||
- [x] Add ADR decision records.
|
||
- [x] Add RFC placeholders for future modules.
|
||
- [x] Add API/database/event contracts.
|
||
- [x] Add model registry and class catalogs.
|
||
- [x] Add queue architecture.
|
||
- [x] Add acceptance matrix and test catalog.
|
||
- [x] Add Codex M2 build prompts.
|
||
- [ ] Start Codex Pass 01 backend foundation.
|
||
|
||
# M4 Autonomous Build Readiness
|
||
|
||
- [x] Add M4 autonomous build readiness document.
|
||
- [x] Add M4 sprint board.
|
||
- [x] Add module build contracts.
|
||
- [x] Add acceptance test catalog.
|
||
- [x] Add API example responses.
|
||
- [x] Add job lifecycle contract.
|
||
- [x] Add frontend state and route contracts.
|
||
- [x] Add backend service IO contracts.
|
||
- [x] Add model registry seed specification.
|
||
- [x] Add demo fixture manifest.
|
||
- [x] Add Codex autonomous runbook.
|
||
- [x] Add Codex pass prompts.
|
||
- [x] 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
|
||
|
||
- [x] CI/CD specification added.
|
||
- [x] Healthcheck contracts added.
|
||
- [x] Observability plan added.
|
||
- [x] Troubleshooting runbook added.
|
||
- [x] Rollback and recovery plan added.
|
||
- [x] Security checklist added.
|
||
- [x] Geospatial validation rules added.
|
||
- [x] Build governance added.
|
||
- [x] Codex pass documents added.
|
||
- [x] Smoke scripts added.
|
||
- [ ] M6: implement actual backend foundation.
|
||
- [ ] M6: implement database migrations.
|
||
- [ ] M6: implement frontend shell.
|
||
|
||
## M8 Codex Day-1 Readiness
|
||
|
||
- [x] Add Day 1 master prompt.
|
||
- [x] Add pass-by-pass Day 1 prompts.
|
||
- [x] Add autonomy boundaries.
|
||
- [x] Add failure recovery playbook.
|
||
- [x] Add quality gate matrix.
|
||
- [x] Add operator checklist.
|
||
- [x] Add smoke script scaffold.
|
||
- [ ] Let Codex execute Day 1 implementation passes.
|
||
|
||
|
||
# M10 Ultra Preparation
|
||
|
||
- [x] Add autonomous build charter.
|
||
- [x] Add Codex start-here guide.
|
||
- [x] Add M10 master autonomous prompt.
|
||
- [x] Add pass sequence.
|
||
- [x] Add geometry and CRS contracts.
|
||
- [x] Add error taxonomy.
|
||
- [x] Add feature flag strategy.
|
||
- [x] Add model adapter guide.
|
||
- [x] Add QA/QC matching algorithm.
|
||
- [x] Add frontend state machine.
|
||
- [x] Add implementation ticket index and tickets.
|
||
- [x] Add API example payloads.
|
||
- [x] Add final pre-Codex checklist.
|
||
|
||
# Current Workbench UI
|
||
|
||
- [x] Replace the accumulated shell overrides with a coherent premium presentation layer while preserving V1 behavior.
|
||
- [x] Group navigation into Workspace, Analyze and Deliver and make the inspector an optional drawer.
|
||
- [x] Fix mobile navigation so the active workspace uses the full viewport width.
|
||
- [x] Bound populated Project, Dataset, QA, AI and Export panels so long histories do not push core actions thousands of pixels down-page.
|
||
- [x] Move Data create/upload forms and Map/AI diagnostics into explicit progressive disclosures.
|
||
- [x] Reorder AI Labs around run controls and Map around layer selection plus the MapLibre canvas.
|
||
- [x] Harden detection QA coverage and matching diagnostics before any further model training.
|
||
|
||
- [x] Replace the one-page workflow panel stack with a task-based workbench shell.
|
||
- [x] Add persistent project/AOI/dataset/layer context.
|
||
- [x] Move selected dataset details into a persistent inspector.
|
||
- [x] Deploy the shell refactor to Tower and run live browser smoke on port 1202.
|
||
- [x] Polish Data, Map and AI Labs workspaces.
|
||
- [x] Polish QA/QC and Exports workspaces.
|
||
- [x] Add selected-object inspector detail tabs for project, AOI, dataset, QA check, export and AI run context.
|
||
- [x] Improve map/dataset selection ergonomics from the workbench canvas and inspector.
|
||
- [x] Improve populated Data/Exports readability after a demo workflow run.
|
||
- [x] Improve live visual shell width, scroll behavior and Map workspace layout at 1280px.
|
||
- [x] Add export history filtering controls for long-running demo environments.
|
||
- [x] Add a safe export retention/cleanup command for demo environments.
|
||
- [x] Add a live dry-run maintenance smoke for demo export cleanup.
|
||
- [x] Add browser screenshot artifact automation for visual regression handoff.
|
||
- [x] Add backend error-envelope audit for expected user-error paths.
|
||
- [x] Expand golden datasets beyond the original single building QA fixture pair.
|
||
- [x] Add workbench visual polish pass for command bar, panel surfaces, empty states and mobile nav density.
|
||
- [x] Add map/result overlay ergonomics for active layer provenance and feature property summaries.
|
||
- [x] Add export/report handoff polish for artifact readiness, action grouping and export provenance.
|
||
- [x] Polish lightweight HTML project report readability, print styling and handoff sections.
|
||
- [x] Add Map empty-state quick actions for ready vector datasets.
|
||
- [x] Add Data catalog role-density polish for reference/candidate/source scanning.
|
||
- [x] Add Data catalog action polish for map, metadata, export and QA affordances.
|
||
- [x] Add QA/QC handoff polish for candidate/reference context and persisted results.
|
||
- [x] Add QA/QC metric card polish for precision, recall, F1, IoU and error counts.
|
||
- [x] Add mobile overflow hardening for workbench navigation, inspector and long QA identifiers.
|
||
- [x] Add QA/QC result filtering and density controls for long-running demo projects.
|
||
- [x] Add Overview workflow guidance for the V1 project -> data -> map -> QA/AI -> export path.
|
||
- [x] Audit populated demo workflow and tighten complete-state Overview guidance copy.
|
||
- [x] Make Overview workflow rail Map/Export clicks preserve useful dataset context.
|
||
- [x] Add latest handoff artifact cards to the Export Center for report, metadata and GeoJSON outputs.
|
||
- [x] Add QA/QC evidence drilldown for selected checks, false-positive/negative evidence and provenance JSON.
|
||
- [x] Add raster pipeline readiness and guardrail surfaces for metadata, CRS, preview, tile manifest and clip-AOI handoff.
|
||
- [x] Add useful default dataset context so Data, Map and Exports are immediately usable after project/demo load.
|
||
- [x] Make raster tile handoff to Detection Lab auto-select the configured YOLO run form.
|
||
- [x] Add AI Lab run-readiness checks for Detection and Segmentation before job submission.
|
||
- [x] Add AI Lab action guardrails so explicit fixture models are not exposed as normal operator runs.
|
||
- [x] Add persisted vector area selection from the Map workspace with bbox extract and GeoJSON download.
|
||
- [x] Persist map area selections as Export Center handoff artifacts.
|
||
- [x] Persist map area selections as reusable derived vector datasets indexed into `vector_features`.
|
||
- [x] Add Map workspace QA/QC shortcut for saved derived selection datasets.
|
||
- [x] Add Map workspace QA/QC evidence drilldown handoff for saved selection comparisons.
|
||
- [x] Persist QA/QC feature-level evidence for matches, false positives and false negatives.
|
||
- [x] Render persisted QA/QC feature-level evidence as Map workspace overlays.
|
||
- [x] Add safe local YOLO model env configuration helper for Unraid/Tower runtime activation.
|
||
- [x] Harden configured YOLO inference for single-band raster tiles and wrapped runtime errors.
|
||
- [x] Add operator-only YOLO dataset export and local training-smoke wrapper for real sample calibration.
|
||
- [x] Train/evaluate a small local GeoIntel building-detector smoke from the current operator samples and reject it because QA/QC did not improve.
|
||
- [x] Add operator-only tile-level YOLO dataset export with overlapping windows and deterministic negative tile retention.
|
||
- [x] Run tile-level training on Tower and accept/reject the resulting local model through the persisted QA/QC matrix.
|
||
- [x] Train/evaluate a YOLOv8s hard-negative local building-detector candidate on Tower and keep it inactive because hard-negative false positives remain.
|
||
- [x] Add an operator-facing local model catalog/activation workflow with SHA256, active model status and explicit threshold guidance.
|
||
- [x] Block silent local model asset auto-selection in Detection Lab.
|
||
- [x] Add structured raster tile manifest handoff into Detection Lab with linked preflight visibility.
|
||
- [x] Add full threshold calibration comparison UX so detection runs can compare candidate thresholds before promotion.
|
||
- [x] Add guided in-app detection calibration runner for explicit threshold sweeps.
|
||
- [x] Link guided calibration rows to the QA evidence map.
|
||
- [x] Add guided calibration summary export from the Detection Lab.
|
||
- [x] Allow the evidence bundle script to consume Detection Lab calibration summary exports.
|
||
- [x] Add a local browser-summary QA evidence bundle smoke using mocked canonical evidence responses.
|
||
- [x] Add a multi-AOI calibration evidence portfolio convention for model-review handoff.
|
||
- [x] Run the first live multi-AOI calibration evidence portfolio on Tower for Geel, Mol and Turnhout.
|
||
- [x] Run fresh positive-AOI matrix coverage for Balen, Herentals and Westerlo.
|
||
- [x] Preserve model/tile provenance in calibration evidence bundle summaries.
|
||
- [x] Prevent same-threshold calibration evidence responses from overwriting each other in multi-model portfolios.
|
||
- [x] Add a model promotion decision report that combines positive-AOI score with hard-negative false-positive pressure.
|
||
- [x] Train and reject a YOLOv8s hard-negative r8 partial candidate after 12 CPU epochs through the full positive/background promotion gate.
|
||
- [x] Finish and reject the full YOLOv8s hard-negative r8 e60 candidate through the same promotion gate.
|
||
- [x] Add more AOIs after the tile-level baseline so the next local model attempt is not limited to Geel/Mol/Turnhout.
|
||
- [x] Add negative/background AOIs so the next tile dataset is not all positive tiles.
|
||
- [x] 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
|
||
|
||
- [x] Add a dataset/label-quality audit for generated operator YOLO tile datasets.
|
||
- [x] Report sample coverage, validation coverage, repeated hard-negative pressure and YOLO label area integrity.
|
||
- [x] Wire the audit script into the readiness syntax gate.
|
||
- [x] Use live audit output to decide whether the next model pass needs more positive AOIs, label cleanup or unique hard negatives.
|
||
- [x] Add more unique background/hard-negative AOIs before repeating hard-negative-balanced YOLO training.
|
||
- [x] Supersede `yolo-building-tile-expanded160` only with audited AOI1024 corpora; no repeat-heavy r4/r8 dataset became a default.
|
||
- [x] 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
|
||
|
||
- [x] Expand the documented operator background candidates from 3 to 9 unique AOIs.
|
||
- [x] Keep every new background AOI explicit, `allow_empty_reference=True`, and `sample_role='background_candidate'`.
|
||
- [x] Add test coverage for minimum background candidate count, unique centers and regional spread.
|
||
- [x] Prepare the new samples on Tower and build a fresh hard-negative tile dataset.
|
||
- [x] Rebuild Tower all-in-one image so the newly copied operator scripts are available inside `/app/scripts` without `docker cp`.
|
||
- [x] Fix YOLO preflight CLI so it respects Tower `.env` runtime configuration.
|
||
- [x] Train a new inactive AOI1024 YOLOv8s candidate with visible-label filtering.
|
||
- [x] Fix the all-in-one/compose Nginx upload limit after live 1024px GeoTIFF uploads hit `413 Request Entity Too Large`.
|
||
- [x] Fix the all-in-one/compose Nginx proxy timeout after low-threshold persisted YOLO/QA runs hit `504 Gateway Timeout`.
|
||
- [x] Rerun the previously failing Geel low-threshold persisted QA/QC path for `geointel-building-yolov8s-aoi1024visible025e50-pt` after redeploying upload/timeout fixes.
|
||
- [x] Finish remaining AOI1024 positive-sample matrix coverage for `geointel-building-yolov8s-aoi1024visible025e50-pt`.
|
||
- [x] Run AOI1024 background/hard-negative matrix for `geointel-building-yolov8s-aoi1024visible025e50-pt`.
|
||
- [x] Fix promotion-report parsing for `multi_sample_quality_summary.json` inputs.
|
||
- [x] Generate AOI1024 promotion report and keep recommended candidate as `none`.
|
||
- [x] Add GRB paging before trusting dense reference exports as full ground truth.
|
||
- [x] Regenerate Tower AOI1024 operator samples with paged GRB references, then re-export and audit labels before any new training attempt.
|
||
- [x] Improve AOI1024 label quality before retraining: `yolo-building-aoi1024-cleanpx12vis035` now audits `ok` with 14,632 labels, `min_label_px=12`, `min_label_visible_ratio=0.35`, median normalized box area `0.001373291015625` and small-box share `0.0`.
|
||
- [x] Train and reject `geointel-building-yolov8s-aoi1024cleanpx12vis035e50-pt` through the positive/background promotion gate.
|
||
- [x] Keep every local YOLO candidate inactive until positive-AOI and hard-negative promotion reports recommend default activation.
|
||
|
||
# Sprint 181 - Complete Mol municipality workspace
|
||
|
||
- [x] Persist the official VRBG municipality boundary for Mol (NIS `13025`).
|
||
- [x] Page, deduplicate and boundary-clip the complete GRB GBG building layer.
|
||
- [x] Import municipality layers through the existing DatasetService and
|
||
VectorFeatureService path, with no direct provider-to-database write.
|
||
- [x] Prefer the complete municipality workspace on a fresh session while
|
||
keeping the lightweight boundary as the initially rendered layer.
|
||
- [x] Make GeoJSON bounds calculation safe for municipality-scale layers.
|
||
- [x] 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
|
||
|
||
- [x] Stop downloading municipality-scale vector datasets as one frontend GeoJSON payload.
|
||
- [x] Deliver large persisted layers through the existing PostGIS bbox endpoint from zoom level 14.
|
||
- [x] Report visible/total counts and explicit truncation instead of silently hiding omitted features.
|
||
- [x] Preserve complete loading and auto-fit behavior for small vectors and persisted AI/QA overlays.
|
||
- [x] Allow the real raster/detection/QA operator smoke to reuse the definitive Mol project.
|
||
- [x] Link operator raster/reference uploads to the persisted analysis Area and keep their names distinct from municipality-wide layers.
|
||
- [x] 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
|
||
|
||
- [x] Reject cross-model false-negative comparisons when reference populations differ.
|
||
- [x] Add explicit Olen, Lille, Oud-Turnhout and Kasterlee positive training AOIs.
|
||
- [x] Preserve Turnhout, Retie, Westerlo and Arendonk-heide as manifest-backed validation holdouts.
|
||
- [x] Make the tile exporter reject unknown validation samples and holdout leakage.
|
||
- [x] Refresh the full AOI1024 operator manifest on Tower and fetch only missing AOIs.
|
||
- [x] Export and audit a low-minimum-label dataset without changing the active model.
|
||
- [x] Render and inspect a sample-balanced label contact sheet before training.
|
||
- [x] Finish the inactive expanded-minpx4 candidate and run the full promotion gate.
|
||
- [x] Export the focused 23-sample minpx3 corpus with independent Vosselaar/Grobbendonk validation and external Turnhout/Retie/Westerlo holdouts.
|
||
- [x] 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
|
||
|
||
- [x] Add six complete training-only AOIs outside every protected Mol/Kempen holdout.
|
||
- [x] Page and audit 9,964 new GRB building references with municipality and CRS provenance.
|
||
- [x] Export and visually inspect the 252-tile, 79,192-label reviewed-accuracy corpus.
|
||
- [x] Train one inactive 20-epoch YOLOv8s challenger from the active local model without downloads.
|
||
- [x] Rerun active and challenger models on identical coverage-aware reference populations.
|
||
- [x] Confirm positive-zone F1 improvement in all seven holdouts.
|
||
- [x] Reject challenger activation because Postel-bos produced two detections while the active model remained at zero.
|
||
- [x] 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
|
||
|
||
- [x] Rebalance official source planning across six platform domains.
|
||
- [x] Distinguish operational ready Datasets from audited but unimplemented sources.
|
||
- [x] Reduce Sources workspace noise through domain summaries and progressive disclosure.
|
||
- [x] Add official space, soil, mobility, population, service, climate and economy candidates.
|
||
- [x] 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.
|
||
- [x] Add the digital soil map through DatasetService and VectorFeatureService.
|
||
|
||
# Sprint 224 - Governed GRB evolution
|
||
|
||
- [x] Audit all eight retained regional GRB snapshots for complete official
|
||
source identities and geometry-hash fallbacks.
|
||
- [x] Validate old governed snapshots through authoritative, complete and
|
||
approved operator provenance before enabling object-level comparison.
|
||
- [x] Make future regional GRB imports reject missing official OGC identities.
|
||
- [x] Persist explicit identity schemes and collection prefixes on new GRB
|
||
snapshots.
|
||
- [x] Show precise daily edition ranges and explain registration-date nuance in
|
||
the Evolution workspace.
|
||
- [x] Document refresh readiness across the complete official-source portfolio.
|
||
- [x] Verify and add the governed ALZ catalog probe against the official
|
||
campaign-snapshot and definitive-archive publication contract.
|
||
- [x] Add a read-only orthophoto preflight for product variant, official
|
||
edition, exact WCS selected-area domain and deterministic flight-year points.
|
||
- [x] 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.NN` source version.
|
||
# Bathymetry follow-up
|
||
|
||
- [x] Add governed municipality partition orchestration for all of Flanders
|
||
after the Mol VHA operator passes live acceptance.
|
||
- [x] 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.
|
||
- [x] Add SPW staged-download adapter with mDNG metadata and survey-epoch
|
||
coverage validation.
|
||
- [x] 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.
|
||
|
||
# Scale-aware map selection
|
||
|
||
- [x] Prevent country-scale rectangles from fan-out querying every local
|
||
provider and replace repeated source-limit errors with one overview status.
|
||
- [x] Partition compatible 20-50 km regional vector acquisitions into bounded
|
||
source requests and combine their persisted PostGIS metrics.
|
||
- [x] Keep terrain, flood and thematic rasters behind explicit pixel and
|
||
selection-size budgets.
|
||
- [ ] Provision additional national-scale baseline datasets before exposing
|
||
more overview themes; do not synthesize regional detail at national scale.
|
||
|
||
# Sprint 226 - GeoIntel and ITWorx brand system
|
||
|
||
- [x] Replace the legacy GI/mountain artwork with a distinctive atlas and location mark.
|
||
- [x] Use one canonical SVG across in-product branding and the browser favicon.
|
||
- [x] Generate matching 32 px, Apple touch and Unraid PNG derivatives.
|
||
- [x] Add the approved ITWorx.tech identity as a subtle Jens maker signature.
|
||
- [ ] Revisit alternative lockups only when an approved GeoIntel brand guide exists.
|
||
|
||
# Sprint 227 - Task-first usability audit
|
||
|
||
- [x] Reduce the desktop navigation rail and contain long card/context labels.
|
||
- [x] Align the latest-state and evolution controls as one responsive header group.
|
||
- [x] Make searchable municipality selection the first step of the map workflow.
|
||
- [x] Route an empty quality workspace to real map and image-analysis actions.
|
||
- [x] Replace passive management naming with an actionable system/source monitor.
|
||
- [x] Preserve existing persisted Area, source, analysis and QA contracts.
|
||
- [ ] Add more direct quality-review actions only when a persisted candidate/reference pair exists; never synthesize a check.
|
||
|
||
# Sprint 228 - Optional spatial entry and municipality activation
|
||
|
||
- [x] Search the real persisted NGI municipality catalog instead of existing project Areas.
|
||
- [x] Match Dutch, French and German names plus NIS codes.
|
||
- [x] Activate the exact official geometry idempotently as a reusable project Area.
|
||
- [x] Present municipality search as an optional shortcut beside free map drawing.
|
||
- [x] Explain theme choice as map and primary-metric focus rather than a mandatory workflow gate.
|
||
- [x] Keep narrow theme-card copy and status labels inside their cards.
|
||
- [x] Replace the former compass icon with a scale-safe GeoIntel geo-lens mark.
|
||
# Audit remediation (2026-07-26)
|
||
|
||
- [x] Freeze an audit remediation roadmap with NVIDIA GPU as a server requirement.
|
||
- [x] Add fail-closed CUDA configuration and preflight/runtime validation.
|
||
- [ ] Rebuild Tower with NVIDIA device exposure and capture a CUDA inference smoke.
|
||
- [x] Implement the persisted parent/partition/checkpoint AOI operation.
|
||
- [x] Add source-aware seam deduplication contracts and one-result Dataset aggregation across child partitions.
|
||
- [x] Extend the zone x theme x source resolver with partition-union coverage and per-Dataset evidence.
|
||
- [ ] Resolve governed North Sea bathymetry access without bypassing TLS.
|
||
- [x] Enforce the active building-only model classes, CUDA readiness and persisted Mol/Kempen Area scope.
|
||
- [ ] Add national/regional holdout evidence before expanding model classes or validated Areas.
|
||
## Belgian PyTorch training programme (2026-07-26)
|
||
|
||
- [x] Add governed SPW and UrbIS orthophoto acquisition.
|
||
- [x] Normalize GRB/PICC/UrbIS building labels with decision provenance.
|
||
- [x] Assemble and checksum an initial 19-AOI Belgian candidate corpus.
|
||
- [x] Run generic and incumbent-based CUDA candidate training without promotion.
|
||
- [ ] Complete representative human label/contact-sheet review (the complete 42-AOI review queue and four contact sheets are ready; AI-assisted inspection is recorded separately and does not count as human sign-off).
|
||
- [x] Expand each region/context/split until the national minimum-composition gate passes (42 independent 256 m AOIs at 25 cm, including pure-background and hard-negative contexts).
|
||
- [x] Run explicit spatial leakage and independent calibration/test evaluation.
|
||
- [ ] Promote only if every regional and pure-background gate passes.
|
||
- [x] Freeze the objective train/evaluate/error-analysis loop and regional exit gates.
|
||
- [x] Expand the second corpus wave to 60 independent AOIs and 10,262 accepted labels.
|
||
- [ ] Resolve the v3 Flanders and Wallonia generalisation failures through additional training-only evidence and retraining.
|
||
- [x] Replace rolling-mosaic training inputs with governed dated 2025 Flanders/Brussels and complete 2023 SPW imagery; retain exact flight-day limitations.
|
||
- [x] Reject positive labels over blank/no-data imagery and replace partial SPW 2024 coverage with the complete dated SPW 2023 campaign.
|
||
- [x] Exclude GRB/PICC features created after the corresponding dated imagery period while retaining auditable rejection evidence.
|
||
- [x] Allow the objective CUDA loop to consume an automatically clean `needs_human_review` corpus while keeping final human sign-off as a separate, mandatory promotion gate.
|
||
- [x] Persist checksummed train-only failure-driven sampling after every rejected loop iteration and resume the next checkpoint from that exact dataset YAML.
|
||
- [x] Add a guarded calibration-first entry point for completed checkpoints so v37 and future externally interrupted runs can rejoin the automated loop without redundant retraining.
|
||
- [x] Add and activate a host-side, exact-run-marker supervisor that resumes the v37 CUDA checkpoint after container recreation without launching concurrent trainers.
|
||
- [x] Bind v37 completion to a one-shot JSON command that enters calibration-first evaluation and up to 20 automatic failure-driven CUDA iterations with the frozen aerial augmentation contract.
|
||
- [x] Complete v37 by early stopping at epoch 23, reject its best epoch-5 checkpoint calibration-first, and start closed-loop iteration 2 from checksummed failure-driven sampling.
|
||
- [x] Make orchestrator patience explicit and retain the frozen value `18` in every subsequent CUDA iteration.
|
||
- [x] Preserve v37 warmup and aerial HSV augmentation in every loop iteration; archive and invalidate the pre-epoch-2 run that exposed generic Ultralytics warmup drift.
|
||
- [x] Resume a partially written current loop iteration from its exact `last.pt` after container recreation and activate a host-side parent-loop supervisor.
|
||
- [x] Evaluate the completed v36 YOLO11x checkpoint calibration-first on the rotated v30 holdouts; reject it before opening test/background because the regional calibration gate failed.
|
||
- [ ] Finish and assess the leak-free v37 YOLO11x failure-driven CUDA iteration; open test/background evidence only if every calibration gate passes.
|
||
|
||
# Sprint 229 - Visual release correction and Tower redeploy
|
||
|
||
- [x] Audit the revised landing page, guest map flow and quality workspace at desktop, laptop and tablet widths.
|
||
- [x] Keep the new consolidated GeoIntel design system while correcting the quality-details grid and narrow-laptop result layout.
|
||
- [x] Preserve complete insight labels and readable dataset/evidence cards without weakening the map-first workflow.
|
||
- [x] Make guest authentication independent of optional browser scrolling support.
|
||
- [x] Restore the explicit frontend dependency exclusion required by the Unraid build-context gate.
|
||
- [x] Push the verified release and redeploy the Dockerman-native all-in-one runtime from `/mnt/user/appdata/geointel`.
|
||
|
||
# Sprint 230 - Interactive storytelling and portfolio presentation
|
||
|
||
- [x] Add an accessible interactive project-chain illustration to the public landing page.
|
||
- [x] Add restrained map, scan, route and evidence motion with a complete reduced-motion fallback.
|
||
- [x] Produce original GeoIntel hero and building-QA campaign imagery for project and portfolio use.
|
||
- [x] Capture portfolio-ready landing, story, map, quality and mobile screenshots.
|
||
- [x] Rewrite the repository README around product value, architecture, operation and visual evidence.
|
||
- [x] Deploy and visually verify the presentation release on the Tower runtime.
|
||
|
||
# Sprint 231 - Complete visual system and portfolio case study
|
||
|
||
- [x] Add functional workbench motion for workspace changes, results, jobs, errors and loading skeletons.
|
||
- [x] Add an interactive evidence-first PyTorch/NVIDIA pipeline tied to real detection readiness.
|
||
- [x] Add a project briefing surface with workflow progress, latest QA, source coverage and export status.
|
||
- [x] Add production WebP variants while retaining high-resolution portfolio masters.
|
||
- [x] Produce a dark campaign cover, architecture visual, AI pipeline visual and animated project GIF.
|
||
- [x] Generate and visually verify a six-page portfolio case-study PDF.
|
||
- [x] Commit, push and redeploy the complete presentation release from `/mnt/user/appdata/geointel`.
|
||
|
||
# Sprint 232 - V42 Belgian building generalisation loop
|
||
|
||
- [x] Add 14 independent coastal, industrial, rural, quarry, forest, field and port training AOIs across Flanders and Wallonia.
|
||
- [x] Acquire, temporally filter, SAM2-refine and overlap-retile the new AOIs on the RTX 4080 SUPER.
|
||
- [x] Assemble and checksum the immutable 156-sample v42 corpus while preserving the protected v31 calibration/test/background assignments.
|
||
- [x] Pass structural corpus and 56,474-label tile-quality audits with zero invalid or missing labels and zero spatial leakage failures.
|
||
- [x] Render and inspect a 56-tile contact sheet covering all 14 new AOIs before retraining.
|
||
- [ ] Run the v43 calibration-first, failure-driven CUDA loop against the frozen regional release gates.
|
||
- [ ] Acquire and integrate the v44 Flemish-only corpus wave after six loop assessments isolated coastal, industrial and ribbon-domain under-generalisation.
|
||
- [x] Rotate region-capped repeat windows deterministically per loop round so persistent failures cannot reuse an identical training list indefinitely.
|
||
- [x] Keep near-gate regional precision/recall stabilization inside a 0.03 sampling guard-band to prevent cross-region seesaw regressions.
|
||
- [ ] Open protected test and pure-background evidence only after every calibration gate passes.
|
||
- [ ] Queue final representative human sign-off only after all automated gates pass, then promote and redeploy the exact checksummed model.
|
||
|
||
# Sprint 233 - Live animated gebiedsanalyse
|
||
|
||
- [x] Vertaal de vier schakels van de welkomstillustratie naar de echte kaartworkflow.
|
||
- [x] Koppel Selecteer, Bronnen, Verwerk en Controleer uitsluitend aan bestaande API- en hookstatussen.
|
||
- [x] Toon verwerking, QA, fout en gereed als onderscheidbare live kaartstatussen zonder fictieve successen.
|
||
- [x] Voeg een responsieve desktop- en mobiele procesrail met reduced-motion fallback toe.
|
||
- [x] Dek de statusresolver en het geverifieerde-bewijslabel af met gerichte componenttests.
|
||
- [x] Controleer na Tower-redeploy de gastworkflow visueel op desktop en mobiel; operatorstatus gebruikt dezelfde componentcontracten.
|
||
|
||
# Sprint 234 - Productie operator-login herstellen
|
||
|
||
- [x] Bevestig de actieve operatorconfiguratie en identificeer de exacte gebruikersnaammismatch.
|
||
- [x] Wijzig alleen de productiegebruikersnaam naar `ITWorx` en behoud de bestaande wachtwoordhash en sessiebeveiliging.
|
||
- [x] Herstart vanuit `/mnt/user/appdata/geointel` met behoud van de NVIDIA/AI-image.
|
||
- [x] Controleer containergezondheid, migraties, frontendproxy en actieve runtimeconfiguratie.
|
||
- [x] Werk de operatorconfiguratievoorbeelden bij zodat toekomstige configuratie `ITWorx` gebruikt.
|
||
|
||
# Sprint 235 - Expliciete kaartanalyse en resultatenlade
|
||
|
||
- [x] Laat tekenen uitsluitend het werkgebied vastleggen zonder bronnen of modellen te starten.
|
||
- [x] Voeg meervoudige, expliciete themakeuze en één duidelijke analyseknop toe.
|
||
- [x] Beperk de analysequery tot uitsluitend de gekozen thema’s.
|
||
- [x] Herstel Inzichten als open- en sluitbare lade boven de kaart.
|
||
- [x] Verkort bronteksten en voorkom overflow in de themakolom.
|
||
- [x] Verifieer TypeScript-build, frontend-unitset en responsive runtime visueel.
|
||
## Sprint 236 - Platformbrede UI/UX-herwerking (2026-08-01)
|
||
|
||
- [x] Eén herbruikbare taakgerichte modelselector voor lokale AI, detectie en segmentatie.
|
||
- [x] Automatisch aanbevolen lokale assistentkeuze met persistente, gevalideerde voorkeur en runtimefallback.
|
||
- [x] Alleen werkelijk door backend/runtime gerapporteerde modellen en metadata tonen.
|
||
- [x] Loading-, empty-, unavailable- en errorstates plus toetsenbord- en dialogbediening.
|
||
- [x] Zoekbare en bredere kaartthemalijst met volledig leesbare labels.
|
||
- [x] Compacte analysecontextbalk en rustige desktop/tablet/mobiele hiërarchie.
|
||
- [x] Uitschuifbare inzichten behouden; analyse blijft uitsluitend expliciet na themakeuze.
|
||
- [x] 51 frontendtests en productiebuild groen.
|
||
- [ ] 19 verouderde broncode-stringtests herijken; meerdere eisen daarin (automatische analyse) conflicteren bewust met de actuele productbeslissing.
|
||
|
||
## Sprint 237 - Volwaardige, projectgebonden demo (2026-08-01)
|
||
|
||
- [x] Maak alle niet-administratieve werkruimtes zichtbaar voor demo-gebruikers.
|
||
- [x] Laad dezelfde assistent-, detectie- en segmentatiemodellen en bewaarde resultaten.
|
||
- [x] Sta projectgebonden analyse-, QA-, assistent- en exportacties toe.
|
||
- [x] Behoud server-side blokkades op instellingen, beheer, uploads, reviews en cross-projectverzoeken.
|
||
- [x] Verifieer en redeploy de exacte commit naar Tower `/mnt/user/appdata/geointel`.
|
||
|
||
# Accuracy Improvement Program Phase 2 (2026-08-01)
|
||
|
||
- [x] Complete the Phase-1 forensic inventory, data lineage, reproducible
|
||
baseline, risk register, metric framework, roadmap, status and retained
|
||
evidence manifest.
|
||
- [ ] P2-00: freeze evidence and enforce a promotion/scope-widening lock.
|
||
- [ ] P2-01: establish one canonical CI command, repair import shadowing,
|
||
replace 17 stale source assertions with reviewed behavior tests, close the
|
||
112 Ruff findings and add real frontend lint.
|
||
- [ ] P2-02: fix CRS ingest, metre buffering and Area geometry/CRS updates;
|
||
auditably quarantine or repair the four legacy Geel detections.
|
||
- [ ] P2-03: isolate coverage by source/theme/layer/zone and make official
|
||
source identity server-attested. The mutable-name YOLO scope bypass is fixed
|
||
with a model/checksum-bound geometry manifest; equivalent legal-scope checks
|
||
still require the same review.
|
||
- [ ] P2-04: make derived persistence transactional, require complete
|
||
RunManifest hashes and expose every fallback/persistence failure. Detection
|
||
exports now carry a machine-readable trust contract and fail closed for
|
||
operational use without zero-error authoritative QA.
|
||
- [ ] P2-05: remove every protected-test feedback path, introduce a test vault
|
||
and make the sampler reject protected IDs, paths and assessment fields.
|
||
- [ ] P2-06: complete representative human V56 review; add independent AOIs,
|
||
Brussels pure backgrounds, difficult negatives and corrected temporal/dense
|
||
PICC/UrbIS labels; freeze a new immutable corpus rather than changing V56.
|
||
- [ ] P2-07: implement the metric/null/error-taxonomy contract, stratified
|
||
incumbent baseline, calibration and reproducibility rerun; freeze numeric
|
||
gates before protected-test access.
|
||
- [ ] P2-08: train the pre-registered candidate matrix on the Tower RTX 4080
|
||
SUPER with pinned PyTorch/CUDA, full hashes, seeds and zero CPU fallback.
|
||
- [ ] P2-09: run a calibration-only improvement loop; use only independently
|
||
provisioned, reviewed train data for another corpus version.
|
||
- [ ] P2-10: open protected test/background-test exactly once for one immutable
|
||
pre-registered candidate; never retrain that candidate family from its result.
|
||
- [ ] P2-11: promote and redeploy only after every gate passes, with model card,
|
||
image/model/config hashes, shadow evidence and tested rollback.
|
||
- [ ] P2-12: monitor drift into a human reviewqueue without automatic
|
||
self-training or silent promotion.
|
||
- [x] Audit whether the July `reviewedexp6` checkpoint can be migrated into the
|
||
current runtime provenance contract without invented evidence; retain the
|
||
checksum-bound blocked report.
|
||
- [ ] Do not generate a production sidecar for `reviewedexp6`: its exact
|
||
training commit/runtime, immutable corpus-label-split manifests and accepted
|
||
human-review ledger were not retained and cannot be reconstructed safely.
|
||
- [x] Complete an explicitly AI-assisted per-AOI review of the 64-tile
|
||
reviewedexp6 contact sheet, retaining reviewer type, artifact hash, split
|
||
role, sample accounting and roof/ground-footprint limitations.
|
||
- [x] Extend AI-assisted review to all 252 tiles and 79,192 labels through
|
||
deterministic four-page contact-sheet rendering with complete accounting.
|
||
- [ ] Human-adjudicate the 43 possible nested same-class box pairs in 36 tiles;
|
||
do not rewrite or exclude them automatically because GRB objects can overlap
|
||
legitimately.
|
||
- [x] Persist a deterministic label-relationship audit and a focused 36-tile
|
||
contact sheet; AI follow-up found no systematic duplicate-label pattern.
|
||
- [x] Bind the relationship audit back to exact label-row indices and render
|
||
all 86 implicated rows with type-specific highlighting for focused review.
|
||
- [x] Audit all 79,192 labels at row level for sub-4-pixel dimensions, extreme
|
||
aspect ratio and tile-edge clipping; inspect the complete small/extreme
|
||
sheets and retain immutable hashes.
|
||
- [x] Reconstruct exact cross-tile interior objects and prove that overlap
|
||
repeats 40,031 label rows but causes zero reconstructed train/val crossings.
|
||
- [x] Build and fully audit an immutable experimental corpus with
|
||
`min_label_px=4`; retain 252 tiles and 77,380 labels with zero sub-4-pixel
|
||
rows, missing files, invalid labels or cross-split reconstructed objects.
|
||
- [ ] Compare the existing 0.35 edge-visibility policy against a separately
|
||
versioned stricter ablation from original source geometry before any new
|
||
governed training; do not approximate this by dropping every edge label.
|
||
- [ ] Convert the AI-assisted ledger into no stronger claim than experimental
|
||
triage; a real human must independently review and sign the frozen artifacts
|
||
before the governed training wrapper may unlock.
|