# Benchmarks en kwaliteitsrapportage (VR-116) ## Doel VR-116 levert een reproduceerbaar benchmarkpakket voor: - parservelddekking; - deduplicatie-kwaliteit (precision/recall, false merges/missed merges); - rankingstabiliteit (top-N churn, onbekende-data ratio); - performance (p50/p95, querycount en memory peak). De CLI werkt zonder live netwerk met de synthetische fixtures uit `fixtures/benchmark/`. ## Datasets `fixtures/benchmark/quality_benchmark.json` - bevat parsercases met verwachte parserkey/version en verwachte minima; - bevat dedupe seeds en querycases met verwachte matchlabels; - bevat geen echte broninhoud of persoonlijke gegevens. ## CLI ```bash uv run python scripts/benchmark.py --quick uv run python scripts/benchmark.py --jobs 25000 --top-n 25 uv run python scripts/benchmark.py --jobs 25000 --json --top-n 25 uv run python scripts/benchmark.py --skip-performance --quick ``` ## Rapportformat De JSON-rapportage bevat minimaal: - `parser`: dekking en onbekend-aandeel; - `dedupe`: precision, recall, false merges, missed merges; - `ranking`: top-N churn en unknown-data ratio; - `performance`: p50, p95, querycount, peak memory, totale duur; - `nfr_007`: gegraveerde metingstatus/passing van p95 < 1000 ms. ## Drempels en interpretatie - Parser: standaard doel `coverage_ratio >= 0.90`. - Dedupe: standaard doel `precision >= 0.90` en `recall >= 0.90`. - Ranking: standaard doel `churn <= 0.35`. - NFR-007: enkel als `nfr_007.measured == true` wordt de p95-check als afgewerkt beoordeeld. ## Uitvoeringsmodus - `--quick`: voert parser/dedupe/ranking uit met 250 ingestaste jobs. - standaardmodus: voert ook een performancepass uit op 25.000 jobs (mits runtime toelaatbaar). - `--skip-performance`: nuttig voor CI/quickvalidatie zonder de lange performance-run. ## Afwijkingen Wanneer p95 of dedupe niet voldoet, rapporteert het script een status `failed` met detaildata per case. Die output is bedoeld als regressiebasis voor foutanalyse en threshold-sturing.