Files
geointel/docs/accuracy-program/01-system-inventory.md
T

15 KiB
Raw Blame History

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\geointel op branch codex/geointel-accuracy-program, basis-HEAD 0c019bb22f816db1e4b7a68379bcad08924d9a21;
  • Tower-checkout /mnt/user/appdata/geointel op branch main, dezelfde HEAD;
  • draaiende container /geointel, image geointel-all-in-one:0c019bb22f81-wipfdc62947dfb2-ai, status running, health healthy;
  • 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-256 889ee5b3bfe722803542d15a53a51a716872cf0e8516da5e8291e0a2605adbdb;
  • /mnt/user/appdata/geointel/storage/training/building-be-v62-v58-flanders-balanced-transfer-r1/runs/flanders/weights/last.pt, 456.136.985 bytes, SHA-256 08d12061f017c45c123c824ffa043bc07794beef251c903299eb1e0954636c8b.

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.yml bouwt standaard met GEOINTEL_INSTALL_AI=false en noemt als Torch-index cu130; de actieve Tower-runtime is een AI-image met Torch/CUDA cu128. deploy/unraid/Dockerfile.all-in-one en deployscripts vormen dus een tweede, afwijkend buildpad.
  • GitHub- en Gitea-workflows voeren scripts/run_readiness_check.sh uit. Die gate compileert code, draait backendtests, Alembic heads, frontend unit/typecheck/build, maar controleert de E2E- en veel live-workflows alleen met node --check of bash -n.
  • frontend/package.json heeft geen lint-script en geen ESLint-configuratie, hoewel linting in de teststrategie wordt verwacht. python -m ruff check backend scripts tests meldde 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.