docs(accuracy): publish phase 4 benchmark evidence
GeoIntel release gates / Compile, test, contracts and builds (push) Canceled after 0s
GeoIntel release gates / Python and npm vulnerability policy (push) Canceled after 0s
GeoIntel release gates / GIS image, SBOM and container scan (push) Canceled after 0s

This commit is contained in:
Jens
2026-08-02 05:10:05 +02:00
parent 70fb4b94e5
commit f41392a415
34 changed files with 25672 additions and 8 deletions
@@ -0,0 +1,124 @@
# Fase 4 — Baselinebenchmark
## Beslissing
Het lokale evaluatieharnas is reproduceerbaar en groen. Een betrouwbare
baseline van het actieve GeoIntel-productiemodel is in deze omgeving niet
uitvoerbaar. De productbenchmark is `fail` door de bevestigde Phase-3-leakage;
andere productgates blijven `not_evaluable` zonder governed bewijs. Er wordt
daarom geen productie-accuracy-, België-brede of promotieclaim afgeleid.
| Statusveld | Waarde |
| --- | --- |
| Benchmark-ID | `geointel-p4-reference-harness-v2` |
| Lokale harnasstatus | `pass` |
| Productbenchmark | `fail` |
| Promotie toegestaan | `false` |
| Phase 4 done | `false` |
| Phase 5 ready | `false` |
## Referentie-implementatie als nulmeting
De bestaande productiecode in `backend/app/services/qa_service.py` is via
`scripts/run_golden_qa_benchmark.py` uitgevoerd op vier bevroren golden
QA-scenario's. De dynamische service-UUID wordt niet meegenomen in de
canonieke inhoudshash.
| Golden scenario | Precision | Recall | F1 | Mean matched IoU |
| --- | ---: | ---: | ---: | ---: |
| Partial match | 0,50 | 0,50 | 0,50 | 0,8339768339652592 |
| Perfect match | 1,00 | 1,00 | 1,00 | 1,00 |
| No overlap | 0,00 | 0,00 | `null` | `null` |
| Multipolygon match | 1,00 | 1,00 | 1,00 | 1,00 |
De canonieke referentiehash is
`aeb0f6510352f4e205e4fc4e8c423110ca72c2142016c7af846d758865f258c6`.
Dit bewijst de rekenkundige regressiestabiliteit van de QA-service, niet de
kwaliteit van een detector of segmentatiemodel.
## Multi-task evaluatorbaseline
Negen synthetische, deterministische `test`/`background-test`-cases oefenen
zeven evaluatorfamilies en 15 concrete capabilityrecords uit. De gecombineerde
resultaathash is
`55cdba9cce4dcdc88cee0829cd510d7e624a3472feb9d33f7e681621a792eba3`.
De cases zijn bewust klein; hun scores testen formules, null-semantiek,
raw-retentie, stratificatie en foutclassificatie, niet productkwaliteit.
| Familie | Voornaamste fixture-uitkomst | Claimgrens |
| --- | --- | --- |
| Objectdetectie | P 0,667; R 1,000; F1 0,800; AP50 1,000; AP50–95 0,901 | formule-/harnastest |
| Footprintsegmentatie | mean IoU 0,799; Dice 0,888; boundary F1 1,000 | formule-/harnastest |
| Categorisch raster | accuracy 0,833; macro F1 0,822; mean IoU 0,722 | metriekcontract, geen geleerd rastermodel |
| Vectorvergelijking | P/R/F1 0,500; mean matched IoU 1,000 | formule-/harnastest |
| Change detection | globale P/R/F1 0,500; afzonderlijke added/removed metrics | eventclassificatie zichtbaar |
| Terrein | MAE 0,275 m TAW; RMSE 0,287 m TAW; coverage 0,800 | eenheids-/coveragecontract |
| Datavalidatie | P/R/F1 0,667; één critical miss | fail-closed anomaliecontract |
Alle subgroepen hebben in deze kleine fixture onvoldoende statistische support.
Hun `release_gate_status` is daarom `not_evaluable`, met de supportreden apart
geregistreerd; geen gemiddelde kan dit omzetten in releasebewijs. De
95%-Wilsonintervallen zijn overeenkomstig breed.
## Ruwe voorspellingen en fouten
De workflow bewaart exacte referenties, pre-/postfiltervoorspellingen,
configuratie en lineage vóór iedere samenvatting. De failure gallery bevat 14
deterministische voorbeelden, waaronder FP/FN, boundary- en area-bias,
rastermisclassificatie, calibratie en een gemiste critical-validatieafwijking.
De failure-ID's zijn inhoudsgebonden en kunnen in regressietests worden
hergebruikt.
Relevante evidence:
- `baseline-raw-predictions.json` — exacte raw referenties, pre-/postfilteroutputs, config en lineage;
- `metric-report.json` — taak- en subgroepmetingen met support en intervallen;
- `failure-gallery.json` — machineleesbare fouttaxonomie en voorbeelden;
- `reference-implementation-baseline.json` — werkelijke QA-service-uitvoering;
- `benchmark-manifest.json` — alle input-, split-, code- en evaluatoridentiteiten.
De canonieke benchmarkmanifesthash is
`0ea5ab07f46c509a7a24943b31d5e9bfd6368920609227bc47613e18e52c4642`;
de exacte bestandshash is
`868dd7eb2dfa8344e417879ed3f5dd7c7d9e5673add7e3e2294c5cbde4b75d57`.
Evidence-run `p4-2.0.1-9677d0ef37db82bcf39b` bindt uitvoerbare codecommit
`70fb4b94e5cb7c248beec5a936ce186f38cc183c`. De evidence-manifestbestandshash
is `fdc15a95ee2a0754dfa169f4b41036e084b8d8909afc37fd8ea68ee6b9210f98`;
de release-gatereportbestandshash is
`e5f1c9c43c8da22acfa5486e641c010a278431f90634f91335b039ab7bdb50a4`.
Deze hashes bewijzen reproduceerbaarheid en integriteit, niet productaccuracy.
## Waarom de productbaseline niet uitvoerbaar is
De productgates zijn bewijsgebonden en kunnen niet vanuit losse statusvelden
groen worden gemaakt:
1. de actieve modelconfiguratie verwijst naar `/app/models/...pt`, die lokaal
niet als bestand beschikbaar is;
2. er is geen governed productmanifest met in-process herberekende raw evidence
voor alle zeven taakfamilies en een actueel CUDA/GPU-receipt;
3. een volledige GRB/PICC/UrbIS/DHMV/SPW/MDK-taak-/zoneportfolio ontbreekt;
4. een checksumgebonden reviewledger ontbreekt; historisch staat V56 op 0/180;
5. een productgebonden geometrische leakage-audit ontbreekt; historisch zijn er
24 cross-splitparen onder 2 km;
6. de Phase-3-leakagestatus is bevestigd `attention` en dus `fail`;
7. vaultisolatie met hash-chained accesslog is niet bewezen;
8. representatieve support over alle 13 vereiste subgroupdimensies ontbreekt.
Door de fail-first aggregatie maakt de bevestigde Phase-3-leakage de huidige
productbenchmark `fail`; ontbrekende productartefacten blijven afzonderlijk
`not_evaluable`. Geen van beide toestanden laat promotie toe.
Daarnaast waren Tower-corpora, gemounte modelvolumes en de productie-PostGIS/API
in Phase 3 expliciet onbereikbaar. Het harnas verzint daarvoor geen vervangende
ground truth en gebruikt OSM niet automatisch als gezagsbron voor gebouwen.
## Betekenis voor volgende training
Test- en challenge-data mogen niet worden geopend voor training,
thresholdselectie, modelselectie of iteratieve foutcorrectie. Eerst moeten de
representatieve review, nieuwe onafhankelijke splits, lokale gezagsdata,
protected vault en een checksumbare incumbent-run beschikbaar zijn. Daarna
worden modelkeuzes op `val` en operating points op `calibration` vooraf
vastgelegd; pas vervolgens mag één immutable kandidaat de protected test en
background-test doorlopen. Challenge-labels blijven sealed.