15 KiB
GeoIntel Accuracy Improvement Program — 01 Systeeminventaris
1. Doel, peildatum en claimgrens
Dit document beschrijft de aantoonbaar aanwezige GeoIntel-componenten op 1 augustus 2026. Het is een forensische inventaris, geen kwaliteitscertificaat. implemented betekent dat code en een contractpad bestaan; configured betekent dat de betreffende runtimeconfiguratie daadwerkelijk is waargenomen; fixture/mock betekent dat het pad alleen test- of demobewijs levert; planned/unproven betekent dat geen uitvoerbaar productiebewijs is gevonden.
De inventaris is opgebouwd uit:
- checkout
C:\Projects\geointelop branchcodex/geointel-accuracy-program, basis-HEAD0c019bb22f816db1e4b7a68379bcad08924d9a21; - Tower-checkout
/mnt/user/appdata/geointelop branchmain, dezelfde HEAD; - draaiende container
/geointel, imagegeointel-all-in-one:0c019bb22f81-wipfdc62947dfb2-ai, statusrunning, healthhealthy; - read-only runtime-/databasecollectie in
C:\Projects\geointel\artifacts\evidence\accuracy\P1\tower-runtime-database-snapshot-detailed.json; - read-only GPU-smoke in
C:\Projects\geointel\artifacts\evidence\accuracy\P1\tower-gpu-inference-smoke.json; - retained model-, checkpoint-, corpus- en splitinventaris in
C:\Projects\geointel\artifacts\evidence\accuracy\P1\tower-ml-data-lineage-snapshot.json; - lokale repository- en artifactinventaris in dezelfde evidence-map.
Geen bevinding in dit document bewijst nationale modelkwaliteit, menselijk gevalideerde labels, calibratie, geografische generalisatie of releasegeschiktheid.
2. Uitvoerbare productarchitectuur
| Onderdeel | Concrete code-/configpaden | Status | Bewezen runtime-/teststatus | Accuracy-grens |
|---|---|---|---|---|
| React/TypeScript workbench | frontend/src/App.tsx, frontend/src/components, frontend/src/hooks, frontend/src/services |
implemented | 16 frontend-testbestanden; Vitest 51/51, typecheck en productiebuild slaagden in de Phase-1-baseline | UI-werking bewijst geen inhoudelijke GIS- of modeljuistheid |
| Mapweergave en gebiedsselectie | frontend/src/components/map/MapWorkspace.tsx, MapLibre dependency in frontend/package.json |
implemented | compileert en is unit-getest; geen volledige browser-E2E-uitvoering in de releasegate | selectie-UX is geen bewijs dat server-side scope/CRS correct is |
| FastAPI HTTP-laag | backend/app/main.py, backend/app/api/routes/*.py |
implemented | 148 route-decorators statisch gevonden; OpenAPI-audit zag 147 routes, waarvan 10 contractueel toegestane niet-envelope routes | route-aanwezigheid bewijst geen correcte gegevensinhoud |
| Projecten en AOI's | project_service.py, area_service.py, routes projects.py en areas.py |
implemented, persisted | 1.097 projecten en 387 gebieden in Tower; alle 387 gevulde gebiedsgeometrieën geldig, SRID 4326 en binnen het 4326-domein | Area PATCH en naamgebaseerde wettelijke scope hebben bewezen contract-/integriteitsgaten |
| Datasetinname en versies | dataset_service.py, storage_service.py, datasets.py |
implemented, persisted | 3.377 datasets, alle status ready; 1.671 datasetversies; 5.816 directe storage-referenties gecontroleerd, 0 ontbrekend |
ready is een verwerkingsstatus, geen bronautoriteit of inhoudelijke kwaliteitsclaim |
| Rasterverwerking | raster_service.py, raster_operations_service.py, acquisitieservices voor orthofoto/DHMV/WALOUS/SPW |
implemented | raster- en GIS-gerichte tests slaagden; bestaande Tower-tiles konden read-only worden geopend | geen volledige corpusbrede rasteralignment-/nodata-/resolutieaudit afgerond |
| Vectorverwerking | vector_feature_service.py, vector_operations_service.py, officiële-vectoracquisitie |
implemented, persisted | 6.689.447 vector_features; alle gevulde geometrieën geldig, SRID 4326 en binnen domein in de gebonden DB-query |
buffer, import-CRS en afgeleide-featurepersistentie hebben kritieke gereproduceerde fouten |
| Bron- en dekkingsresolutie | providers/*, coverage_registry_service.py, source_catalog_probe_service.py |
implemented | 28 waargenomen source_name-waarden in de DB; officiële en fixtureproviders zijn afzonderlijk gemodelleerd |
bronautoriteit kan via uploadmetadata worden gespooft; dekking kan door een andere themalaag worden overschat |
| Achtergrondjobs/AOI-operations | job_service.py, aoi_operation_service.py, aoi_operation_worker.py, backend/app/workers |
implemented, configured | 4.460 jobs: 4.325 success, 135 failed; 4 AOI-operations en 61 partitions; geen lopende job/run tijdens snapshot | status success is geen accuracy-gate; foutpercentages zijn niet per workflow genormaliseerd |
| Objectdetectieadapter | detection_service.py, detection_georeferencing.py, yolo_adapter.py, yolo_preflight_service.py |
implemented, configured op Tower | 1.146 detectieruns: 1.144 success, 2 failed; 299.233 detecties; één read-only productieadapter-smoke op GPU slaagde | actieve modelscope wordt op een muteerbare gebiedsnaam afgedwongen; modelversie is leeg; smoke bewijst geen accuracy |
| Modelregister | model_registry_service.py, runtimeinstellingen in backend/app/core/config.py |
mixed | actief YOLO-pad bestaat; register toont daarnaast expliciet yolo-placeholder en manual-fixture-detector |
placeholder/fixture mogen niet als productie-inference of kwaliteitsbewijs worden geteld |
| Segmentatie | segmentation_service.py, segmentation_adapter.py, routes segmentation.py |
abstraction implemented; production unproven | modelregister bevat segmentation-placeholder en fixture-segmenter; Tower bevat 0 segmentaties |
geen bewijs van geconfigureerde productie-segmentatie of modelkwaliteit |
| QA/QC en metrics | qa_service.py, quality_service.py, detection_qa_service.py, routes qa.py en quality_checks.py |
implemented, persisted | 697 quality checks en 4.182 metricrijen; 4-scenario golden fixturebenchmark slaagde | metricnulls en ongedefinieerde no-overlap-F1 vereisen een expliciet contract; fixturebenchmark is geen veldbenchmark |
| Exports | export_service.py, route exports.py |
implemented, persisted | 768 exportrecords; directe storage-referenties zaten in de 5.816 gecontroleerde records | een export kan een foutief upstreamresultaat correct serialiseren |
| Demo/fixtures | demo_workflow_service.py, providers/fixture.py, fixtures/* |
fixture/demo only | expliciet gemarkeerde fixtureprovider en handmatige fixturemodellen | nooit meenemen in productie- of nationale accuracyclaims |
| Training- en audittooling | scripts/run_belgium_building_training_loop.py, scripts/evaluate_belgium_building_candidate.py, corpus-/label-/qualityscripts |
implemented tooling; release linkage incomplete | omvangrijke Tower-runs en checkpoints aanwezig; v56 automated audits en v62 previewcalibratie aantoonbaar | protected-testfeedback lekt terug naar volgende sampling; 0/180 v56-corpussamples menselijk gereviewd; geen geldige nationale promotieclaim |
| Deployment | deploy/unraid/Dockerfile.all-in-one, docker-compose.unraid.yml, deploy/unraid/* |
implemented, configured op Tower | all-in-one-container gezond; NVIDIA GPU doorgegeven | compose-default cu130 en feitelijke image/runtime cu128 zijn supply-chain/builddrift; CI bouwt standaard zonder AI |
| Documentatie/contracts | docs/API_CONTRACTS.md, docs/DATABASE_IMPLEMENTATION_PLAN.md, scope freezes en DoD |
implemented but drifted | contracttests bestaan | meerdere documenten beschrijven historische of geplande toestand die niet met de runtime overeenstemt |
3. Repositoryomvang en bronstaat
De machineleesbare inventaris staat in artifacts/evidence/accuracy/P1/repository-inventory.json.
| Groep | Bestanden | Regels |
|---|---|---|
| backend applicatie | 129 | 32.583 |
| backend tests | 235 | 36.067 |
| frontend broncode | 112 | 23.534 |
| frontend E2E-scripts | 2 | 734 |
| migraties | 11 | 610 |
| root tests | 7 | 261 |
| scripts | 158 | 43.180 |
Aanvullend zijn 1.182 test_*-functies, 16 frontend-testbestanden en 148 API-route-decorators statisch geteld. Dit zijn omvangmetingen, geen bewijs dat iedere test of route correct is.
De checkout bevat 2.495 tracked files. Daarvan zijn 1.153 bestanden een tweede, tracked repositorykopie onder geointel/: 1.085 gepaarde bestanden zijn byte-identiek en 68 verschillen van hun roottegenhanger. Docker sluit /geointel expliciet uit, maar lokale imports, zoekresultaten en scripts kunnen toch de verkeerde kopie raken. Verder zijn onder meer 109 tracked bestanden onder .codex-input, 27 onder data, één onder output en vier onder test-results aangetroffen. Phase 1 verwijdert of overschrijft deze user-/historieartefacten niet.
4. Runtime en persistence op Tower
4.1 Platform
| Eigenschap | Waargenomen waarde |
|---|---|
| Host/containerplatform | Linux 6.12.54 Unraid, x86_64 |
| Python | 3.11.2 |
| PostgreSQL | 16.14 |
| PostGIS | extension 3.6.4; core procedures melden nog 3.4.3 en need upgrade |
| Alembic-head | 202607260001 (één lineaire statische en runtime-head) |
| PyTorch | 2.11.0+cu128 |
| torchvision | 0.26.0+cu128 |
| Ultralytics | 8.4.99 |
| CUDA-runtime | 12.8 |
| GPU | één NVIDIA GeForce RTX 4080 SUPER; CUDA beschikbaar |
| GIS-libraries | GeoPandas 1.1.4, Rasterio 1.4.4, Shapely 2.1.2, pyproj 3.7.2, GeoAlchemy2 0.20.0 |
4.2 Persistente aantallen
| Tabel | Rijen | Tabel | Rijen |
|---|---|---|---|
projects |
1.097 | areas |
387 |
datasets |
3.377 | dataset_versions |
1.671 |
vector_features |
6.689.447 | analysis_runs |
1.146 |
detections |
299.233 | segmentations |
0 |
detection_reviews |
0 | quality_checks |
697 |
metrics |
4.182 | jobs |
4.460 |
exports |
768 | aoi_operations |
4 |
aoi_operation_partitions |
61 |
De snapshot gebruikte statement_timeout=30000 ms en read-only queries. De volledige recursieve storageaudit eindigde in een time-out en is dus geen pass; de aparte controle van alle 5.816 directe storage_path-referenties voltooide wel en vond 0 ontbrekende bestanden. Niet-gerefereerde, geneste of semantisch verkeerde artefacten vallen buiten dat resultaat.
5. Modellen en trainingsartefacten
5.1 Actief productiepad
| Veld | Waarde |
|---|---|
| Containerpad | /app/models/geointel-building-yolov8s-smallbld-minpx3-img640-ft30.pt |
| Hostpad | /mnt/user/appdata/geointel/models/geointel-building-yolov8s-smallbld-minpx3-img640-ft30.pt |
| SHA-256 | a9088b8491dfae36694b53e9e9406cb4e3511d334a5712fa34f75078a47759c1 |
| Grootte | 22.516.074 bytes |
| Geconfigureerde klasse | building |
| Device | cuda:0, CUDA verplicht |
| Geconfigureerde validatienamen | Mol,Kempen |
| Modelversie | leeg |
De hash identificeert het actieve bestand. Er is geen aangetoonde release-/dataset-/commitketen die deze hash koppelt aan een menselijk gereviewd, beschermd testresultaat. De scopecheck gebruikt bovendien een substring in Area.name, niet een onveranderlijke geografische scope.
De GPU-smoke gebruikte één bestaande 512×512 RGB GeoTIFF in EPSG:31370 en de productieadapter met seed 20260801, deterministische algoritmen, imgsz=640, confidence 0.5 en max_det=1000. Het model produceerde 17 building-boxes in 0,884 s inference; dat bewijst alleen dat één adapter-call op de NVIDIA-GPU uitvoer gaf.
5.2 Niet-actieve recente checkpoints
De retained Tower-inventaris telt 26 modelassets in /app/models, 229 trainingscheckpoints met samen 28.512.052.142 bytes, 424 JSON-trainingsrapporten en 36 operator-manifests. Dit zijn aanwezigheidsaantallen; de collector claimt uitdrukkelijk geen human label acceptance, strikte splitonafhankelijkheid, protected-testprestatie, nationale geldigheid of release readiness.
Onder de niet-actieve checkpoints bestaan onder meer:
/mnt/user/appdata/geointel/storage/training/building-be-v62-v58-flanders-balanced-transfer-r1/runs/flanders/weights/best.pt, 456.136.473 bytes, SHA-256889ee5b3bfe722803542d15a53a51a716872cf0e8516da5e8291e0a2605adbdb;/mnt/user/appdata/geointel/storage/training/building-be-v62-v58-flanders-balanced-transfer-r1/runs/flanders/weights/last.pt, 456.136.985 bytes, SHA-25608d12061f017c45c123c824ffa043bc07794beef251c903299eb1e0954636c8b.
Aanwezigheid is geen activatie of promotie. Het v62-pad heeft in de geïnspecteerde run alleen preview-calibratiebewijs op 144 tiles; geen protected-test-, achtergrondtest- of releasebundel werd daar aangetroffen. De meest recente geïnspecteerde v66-manifestversie bevat slechts drie Vlaamse train-samples, nul background-test-samples en geen andere regio/split; ze is een gerichte proef, geen opvolgende nationale corpusrelease.
5.3 Lokale checkout
De lokale artifactscanner inventariseerde 193 bestanden (84.874.287 bytes) onder models, datasets, data, storage, artifacts en output: 114 rasters, 32 overige bestanden, 21 runtime-databasebestanden, 13 visuele-reviewbestanden, 6 evaluatie/auditbestanden, 5 manifests en 2 vectors. Er staat lokaal geen modelcheckpoint. Grote bestanden zijn bewust niet allemaal gehasht; aanwezigheid van contact sheets telt niet als menselijke review.
6. Build-, CI- en configuratiedrift
- De lokale audit draaide met Python 3.13.2, Node 24.18.1 en npm 11.16.0; CI is ingericht op Python 3.11 en Node 20. Een lokaal groen resultaat is daarom niet automatisch een CI-runtimebewijs.
docker-compose.unraid.ymlbouwt standaard metGEOINTEL_INSTALL_AI=falseen noemt als Torch-indexcu130; de actieve Tower-runtime is een AI-image met Torch/CUDAcu128.deploy/unraid/Dockerfile.all-in-oneen deployscripts vormen dus een tweede, afwijkend buildpad.- GitHub- en Gitea-workflows voeren
scripts/run_readiness_check.shuit. Die gate compileert code, draait backendtests, Alembic heads, frontend unit/typecheck/build, maar controleert de E2E- en veel live-workflows alleen metnode --checkofbash -n. frontend/package.jsonheeft geenlint-script en geen ESLint-configuratie, hoewel linting in de teststrategie wordt verwacht.python -m ruff check backend scripts testsmeldde 112 bevindingen (E402 13, E701 2, E702 69, F401 23, F403 1, F811 2, F841 2) en zit niet in de huidige readinessgate.- De CI bouwt niet aantoonbaar de AI/CUDA-image en controleert geen hash-lock voor de PyTorch/Ultralytics-artifactketen.
7. Reproduceerbare inventariscommando's
Vanaf C:\Projects\geointel:
python scripts\run_accuracy_phase1_baseline.py --output-dir artifacts\evidence\accuracy\P1
python scripts\collect_accuracy_phase1_runtime.py --help
python scripts\collect_accuracy_phase1_inference_smoke.py --help
git rev-parse HEAD
git status --short
De laatste twee collectors zijn ontworpen om in de Tower-container tegen /app/storage en /app/models te draaien; de bewaarde outputs zijn de JSON-bestanden in artifacts/evidence/accuracy/P1. Voor serveridentiteit is read-only geverifieerd:
cd /mnt/user/appdata/geointel
git rev-parse HEAD
git branch --show-current
docker inspect geointel --format '{{.Config.Image}} {{.State.Status}} {{.State.Health.Status}}'
8. Inventarisconclusie
GeoIntel is geen mockplatform: de workbench, API, PostGIS-persistentie, provider- en analysekaders, jobs, exports, QA/QC en een echte CUDA-YOLO-adapter zijn aantoonbaar geïmplementeerd en draaien. Even aantoonbaar is dat meerdere kritieke correctheidsgrenzen ontbreken of omzeild kunnen worden. Segmentatie is niet als productiemodel bewezen, fixturepaden blijven aanwezig, recente training is niet naar een geldige releaseketen gepromoveerd en geen enkel Phase-1-resultaat ondersteunt “100% getraind” of nationale nauwkeurigheid.