110 lines
5.7 KiB
Markdown
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`.
|