78 lines
5.6 KiB
Markdown
78 lines
5.6 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 | 295 |
|
|
| Overgeslagen bestanden | 0 |
|
|
| Onbereikbare scope-items | 3 |
|
|
| Geïnventariseerd totaal | 298 |
|
|
| Reconciliatie | groen (`295 + 0 + 3 = 298`) |
|
|
|
|
De drie expliciet onbereikbare items zijn de niet-gemounte Tower-corpora, gemounte modelvolumes en een productie-PostGIS/API-endpoint. Elk staat als `unreachable` in het volledige manifest met concrete reden; er is geen stilzwijgende skip.
|
|
|
|
De scan leverde 172 anomalieën op. Dat is geen geldigheidsclaim: 163 items zijn daarom in de logische quarantine-manifest 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 | quarantine |
|
|
| Afgeleide artefacten zonder expliciete lineage | 58 | quarantine |
|
|
| Bronlabel zonder declared freshness | 9 | 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-46ee3f8d3a2dc52b` / `1a219362c6cb2ac00489625f1a9b36e2fd4809ab58ee55ab1f67c3cc34773f3e`
|
|
|
|
## 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
|
|
|
|
Fase 3 is `done` voor de afgebakende projectomgeving: alle 295 veilige lokale bestanden zijn verwerkt en de drie niet-bereikbare externe grenzen zijn expliciet geregistreerd. Fase 4 is `ready` voor verdere beoordeling van de gevonden quarantine- en leakage-signalen. Dit is geen modelpromotie- of nationale kwaliteitsclaim; de inhoudelijke anomalieën moeten eerst door de volgende fase worden hersteld of 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`.
|