# 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`.