Files
geointel/docs/accuracy-program/12-release-gates.md
T
Jens f41392a415
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
docs(accuracy): publish phase 4 benchmark evidence
2026-08-02 05:10:05 +02:00

110 lines
5.7 KiB
Markdown

# Fase 4 — Releasegates
## Gateprincipe
GeoIntel gebruikt een conjunctieve, fail-closed beslissing: iedere verplichte
gate moet groen zijn. Een hogere gemiddelde score compenseert nooit een
ernstige regressie, ontbrekende support of een critical miss in een vereiste
regio, bron, context of taak.
Er wordt in Phase 4 geen arbitrair hoog accuracydoel verzonnen. Numerieke
releasecriteria blijven `not_frozen_without_reviewed_representative_incumbent_baseline`.
Ze worden pas vastgesteld uit taakrisico, operationele productvereisten,
datakwaliteit en een representatieve, gereviewde incumbentbaseline, en altijd
vóór protected-testtoegang.
## Lokale harnasgates
De volgende controles zijn in `release-gate-report.json` groen:
| Gate | Status | Bewijs |
| --- | --- | --- |
| Alle gedeclareerde taakfamilies | pass | zeven families en 15 capabilities gedeclareerd en geobserveerd |
| Split leakage | pass | zes code-owned rollen; exacte/near-duplicate/identity/2-km-gates groen voor de fixture |
| Training firewall | pass | protected path/role/lineage en padloze of gewijzigde bytes worden geweigerd |
| Geen protected modelselectie | pass | vooraf geregistreerde config; diagnostische curves selecteren niets |
| Ruwe voorspellingen | pass | exacte referenties, pre-/postfilteroutputs, config en lineage behouden |
| Referentie-implementatie | pass | vier golden cases via de echte `QaService` |
| Subgroepcontract | pass | alle 13 dimensies, support, CI en worst-stratum zichtbaar |
| Null-semantiek | pass | ongedefinieerd is `null`; promotion blijft uit |
Deze gates bewijzen dat de evaluator zich lokaal correct gedraagt. Ze bewijzen
niet dat het productiemodel voldoet.
Een test-only governed-contractfixture met 70 cases bewijst dat de groene route
structureel bereikbaar is en dat tampering wordt geweigerd. De gemockte runtime
en handgemaakte cases zijn uitdrukkelijk geen productbewijs.
## Productgates
De volgende actuele gates blokkeren Phase 4:
| Gate | Status | Objectief bewijs |
| --- | --- | --- |
| Actief model bereikbaar en hashbaar | not_evaluable | geconfigureerd `/app/models`-asset is lokaal afwezig |
| Volledige gezagsportfolio | not_evaluable | geen governed GRB/PICC/UrbIS/DHMV/SPW/MDK-taak-/zonebewijs |
| Representatieve menselijke review | not_evaluable | geen checksumgebonden reviewledger; historisch 0/180 |
| Ruimtelijke split-onafhankelijkheid | not_evaluable | geen productgebonden geometrische audit; historisch 24 paren <2 km |
| Phase-3 leakage opgelost | fail | actuele status `attention` |
| Fysieke protected storage isolation | not_evaluable | geen vaultbewijs met hash-chained accesslog |
| Uitgevoerde product-incumbent | not_evaluable | geen model/raw/config/CUDA-gebonden productmanifest |
| Representatieve subgroup-support | not_evaluable | geen productmetrics over alle 13 dimensies |
Door `fail > not_evaluable > pass` is de productbenchmarkstatus `fail`. Dat is
geen gemeten accuracy failure: de bevestigde leakagegate faalt en de overige
productmetingen zijn nog niet evalueerbaar. `promotion_allowed` blijft `false`.
## Toekomstige numerieke gatefreeze
Een latere gatefreeze moet per taak minimaal vastleggen:
- exacte model-, evaluator-, preprocessing-, bron- en splitmanifesthashes;
- klasse- en matchbeleid, operating threshold en NMS-configuratie;
- globale primaire metric met betrouwbaarheidsinterval;
- vereiste regio-, gemeente-, stedelijkheids-, objectgrootte-, bron-, sensor-,
resolutie-, seizoen-, datum-, vegetatie-, occlusie-, moeilijkheids- en
contextsubgroepen;
- minimale onafhankelijke AOI-/objectsupport per groep;
- non-inferioritymarge tegenover de incumbent;
- harde maxima voor kritieke false negatives, false positives,
topologiefouten en calibration error;
- abstention/coverage-regel voor onzekere gevallen;
- runtime-, GPU-, latency- en resourcecontract waar operationeel relevant.
Een releasebeslissing is alleen positief wanneer zowel de globale gate als
iedere kritieke subgroepgate groen is. `insufficient_support`, `null`, een
ontbrekende groep, ongeldige lineage, een checksumverschil of een gemiste
blocker/critical anomaly blokkeert.
## Beschermde evaluatievolgorde
1. Herstel of excludeer Phase-3-quarantine-items traceerbaar.
2. Laat representatieve labels menselijk beoordelen en freeze een nieuwe
corpusversie; wijzig V56 niet in place.
3. Genereer onafhankelijke `train`, `val`, `calibration`, `test`,
`background-test` en sealed `challenge`-manifesten; laat alle leakage-gates
slagen.
4. Plaats test/background-test en externe challenge-labels in een afzonderlijke
vault met beperkte credentials en hash-chained immutable accesslog.
5. Voer de incumbent uit en freeze targets op `val`, operating points op
`calibration` en operationele vereisten vóór protected toegang.
6. Train uitsluitend op `train`; selecteer checkpoints alleen op `val`.
7. Pre-registreer één immutable kandidaat en open `test` en `background-test`
één keer; challenge-labels blijven sealed.
8. Bewaar raw predictions, herbereken paired/subgroepmetrics in-process en neem
één fail-closed releasebeslissing.
9. Gebruik protected resultaten nooit als feedback voor dezelfde kandidaat- of
trainingsfamilie.
## Actuele fasebeslissing
Phase 4 blijft `in_progress`: het reproduceerbare lokale harnas is klaar, maar
de echte protected productbaseline kan nog niet geldig worden uitgevoerd.
Phase 5 blijft `not_ready`. Deze status verandert pas wanneer alle productgates
in dezelfde checksumbare workflow groen zijn; documentatie of fixture-scores
kunnen die voorwaarde niet omzeilen.
Normatieve evidence-run: `p4-2.0.1-9677d0ef37db82bcf39b`, gebonden aan
codecommit `70fb4b94e5cb7c248beec5a936ce186f38cc183c` en canonieke
benchmarkmanifesthash `0ea5ab07f46c509a7a24943b31d5e9bfd6368920609227bc47613e18e52c4642`.