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