104 lines
6.5 KiB
Markdown
104 lines
6.5 KiB
Markdown
# Fase 3 — Volledige datascan en quarantaine
|
|
|
|
## Resultaat
|
|
|
|
De reproduceerbare scan `scripts/run_accuracy_phase3_full_data_scan.py` is read-only uitgevoerd over de veilige lokale scope `models/`, `datasets/`, `data/`, `storage/`, `artifacts/` en `output/`. De scan schrijft uitsluitend bewijs naar `artifacts/evidence/accuracy/P3/`; bronbestanden zijn niet gewijzigd.
|
|
|
|
| Telling | Aantal |
|
|
| --- | ---: |
|
|
| Onderzochte bestanden | 1013 |
|
|
| Overgeslagen bestanden | 0 |
|
|
| Onbereikbare scope-items | 3 |
|
|
| Geïnventariseerd totaal | 1016 |
|
|
| Reconciliatie | groen (`1013 + 0 + 3 = 1016`) |
|
|
|
|
De drie expliciet onbereikbare items zijn grenzen van deze lokale
|
|
Windows-scan: de niet lokaal gemounte Tower-corpora, modelvolumes en het
|
|
productie-PostGIS/API-endpoint. Elk staat als `unreachable` in het volledige
|
|
manifest met concrete reden; er is geen stilzwijgende skip. Dit betekent niet
|
|
dat de server zelf onbereikbaar is. Een afzonderlijke gecontroleerde
|
|
productiescan moet die remote scopes beoordelen voordat een nationale
|
|
volledigheidsclaim mogelijk is.
|
|
|
|
De scan leverde 711 anomalieën op. Dat is geen geldigheidsclaim: 682 items
|
|
zijn daarom in het logische quarantainemanifest opgenomen. De scanner promoot
|
|
geen enkel foutief item tot ground truth en voert geen automatische reparatie
|
|
uit. De huidige bevindingen zijn:
|
|
|
|
| Categorie | Aantal | Standaardactie |
|
|
| --- | ---: | --- |
|
|
| Onleesbare/corrupte GeoTIFF | 96 | unavailable or unreadable |
|
|
| Afgeleide artefacten zonder expliciete lineage | 577 | quarantine |
|
|
| Bronlabel zonder declared freshness | 29 | requires review |
|
|
| Manifest met nul-bounding-box | 6 | quarantine |
|
|
| Niet-bereikbare externe scope | 3 | unavailable or unreadable |
|
|
|
|
De eerdere P1-splitinventaris blijft zichtbaar in `leakage-report.json`: 24 AOI-paren lagen onder 2 km en split-onafhankelijkheid was niet bewezen. De scan rapporteert dat als `attention`; bestandsnamen alleen kunnen AOI-onafhankelijkheid niet bewijzen. Er was geen toegankelijke GRB-snapshot in de lokale scope, zodat geen afgeleid resultaat als GRB-ground-truth is gemarkeerd.
|
|
|
|
## Scancontract
|
|
|
|
Iedere inventarisregel bevat een immutable padidentiteit, bestandsgrootte en SHA-256 (waar leesbaar), typecontract, bronclassificatie, lineage, schema/CRS, resolutie/eenheden, ruimtelijke en temporele dekking, freshness, geometrie- of rasterstatus, duplicaatinformatie, anomalieën, ernst en aanbevolen actie. Ondersteunde typecontracten zijn:
|
|
|
|
- `geointel.vector.geojson@1.0.0` — GeoJSON-schema, geometrievaliditeit en EPSG:4326-bounds;
|
|
- `geointel.raster.geotiff@1.0.0` — leesbaarheid, CRS, dimensies, resolutie, bounds, nodata en sample-validiteit;
|
|
- `geointel.label.yolo@1.1.0` — genormaliseerde YOLO-labelregels en expliciete achtergrondreview;
|
|
- `geointel.model.pytorch@1.0.0` — immutable modelartefact-identiteit;
|
|
- `geointel.manifest.json@1.0.0` — CRS, bounds, tile-paden en bron-ID's;
|
|
- `geointel.database.sqlite@1.0.0` en `geointel.artifact.generic@1.0.0` — veilige byte-/schema-inventaris voor runtime- en bewijsartefacten.
|
|
|
|
Er zijn vijf vaste ernstniveaus (`blocker`, `critical`, `major`, `minor`, `informational`) en zeven vaste acties (`accept`, `repairable automatically`, `requires review`, `quarantine`, `exclude from training`, `exclude from evaluation`, `unavailable or unreadable`). Een anomaly wordt nooit automatisch als waarheid gebruikt.
|
|
|
|
## Hervatbaarheid en determinisme
|
|
|
|
De scanner bouwt eerst een gesorteerde inventory-hash. Per batch wordt `scan-checkpoint.json` atomair bijgewerkt. Met dezelfde inventory en `--resume` worden onveranderde records hergebruikt; gewijzigde records worden opnieuw gelezen. De inhoudshash sluit alleen uitvoertimestamps uit. Twee opeenvolgende runs gaven dezelfde scan-ID en content-hash:
|
|
|
|
`p3-eb67185e61107cc7` / `f4ea193d2bdd96a5b391cf7d9d93685cc58e98742c40e4513bcbc434907e720a`
|
|
|
|
## Bewijsartefacten
|
|
|
|
- `artifacts/evidence/accuracy/P3/full-scan-manifest.json` — volledige machineleesbare scan;
|
|
- `artifacts/evidence/accuracy/P3/anomaly-manifest.json` — alle afwijkingen;
|
|
- `artifacts/evidence/accuracy/P3/quarantine-manifest.json` — veilige logische quarantine;
|
|
- `artifacts/evidence/accuracy/P3/duplicates-report.json` — exacte en genormaliseerde near-duplicategroepen;
|
|
- `artifacts/evidence/accuracy/P3/leakage-report.json` — checksum-/splitsignalen en P1-splitinventaris;
|
|
- `artifacts/evidence/accuracy/P3/source-freshness-report.json` — bron/freshness-kruistabel;
|
|
- `artifacts/evidence/accuracy/P3/dataset-summary.json` — samenvatting per contracttype;
|
|
- `artifacts/evidence/accuracy/P3/scan-checkpoint.json` — hervatbare batchstaat.
|
|
|
|
## Reproduceerbare uitvoering
|
|
|
|
```powershell
|
|
python scripts/run_accuracy_phase3_full_data_scan.py --batch-size 40
|
|
python scripts/run_accuracy_phase3_full_data_scan.py --batch-size 40 --resume
|
|
python -m pytest backend/tests/test_accuracy_phase3_full_data_scan.py -q -p no:cacheprovider
|
|
python -m ruff check scripts/run_accuracy_phase3_full_data_scan.py backend/tests/test_accuracy_phase3_full_data_scan.py
|
|
```
|
|
|
|
De fixturetest controleert geldige en foutieve GeoJSON, corrupte rasterinput, exacte duplicaten, quarantine en identieke herhaling. Productie- of brondata wordt door deze tests niet aangeraakt.
|
|
|
|
## Fasebeslissing
|
|
|
|
De lokale Fase-3-scan is volledig voor de afgebakende projectomgeving: alle
|
|
1013 veilige lokale bestanden zijn verwerkt en de drie niet-gemounte grenzen
|
|
zijn expliciet geregistreerd. Fase 3 blijft voor de totale operationele
|
|
omgeving `production_inventory_pending` totdat de servervolumes en database
|
|
in een gecontroleerde productiescan zijn gereconcilieerd. Fase 4 kan de lokale
|
|
quarantine- en leakage-signalen al beoordelen. Dit is geen modelpromotie- of
|
|
nationale kwaliteitsclaim; de inhoudelijke anomalieën moeten eerst worden
|
|
hersteld of representatief menselijk beoordeeld.
|
|
|
|
> **Historische handoff:** `ready` beschrijft het overdrachtsmoment direct na
|
|
> de Phase-3-scan. Het Phase-4-harnas is inmiddels geïmplementeerd, maar de
|
|
> actuele productbenchmark is nog `not_evaluable`; de normatieve actuele
|
|
> status staat in `docs/accuracy-program/status.json`.
|
|
|
|
## Accuracy-handoff na de scan
|
|
|
|
De onafhankelijke AI-visuele triage van 30 augustus is vastgelegd in
|
|
`artifacts/evidence/accuracy/model-training/20260830-independent-ai-visual-review.json`.
|
|
Daarin blijven `human_reviewer=false`, corpusacceptatie, training en promotie
|
|
expliciet geblokkeerd. Een model kan bovendien pas worden geactiveerd wanneer
|
|
de exacte candidate key en model-SHA-256 overeenkomen met een geslaagd governed
|
|
Phase-4/5 release-gaterapport dat ook de benchmarkmanifest-SHA-256 bindt. De
|
|
taakgeschikte officiële bron blijft doorslaggevend voor productresultaten.
|