fix(privacy): herstel de gezichtsscan — dartcv4 2.x miste objdetect/dnn #898

Merged
brenno merged 1 commit from fix/native-face-scan-integration-test into main 2026-07-26 16:06:01 +00:00
Owner

Wat

Herstelt de privacy-gezichtsscan (OciWacht), die sinds de opencv_core -> dartcv4
2.x-migratie (#870/#873) stil kapot was, en dekt hem af met een integratietest.

De bug

dartcv4 2.x levert OpenCV modulair en sluit de meeste modules standaard UIT.
objdetect (FaceDetectorYN) en dnn (YuNet) zaten daardoor niet in de build, dus
cv_FaceDetectorYN_create_1 gooide "symbol not found". De scanner klapte na de
eerste afbeelding om naar niet-beschikbaar en meldde overal "niet gekeken" i.p.v.
te scannen. Geen enkele unit-test ving dit — de native laag laadt niet onder
flutter test, dus de detectietests sloegen zichzelf over.

De fix

pubspec.yaml neemt de nodige modules mee via hooks: user_defines:
[imgproc, imgcodecs, flann, features2d, calib3d, dnn, objdetect]. objdetect hangt
aan calib3d -> features2d/flann; vandaar de keten. Meteen de kleinst werkende build
(al het ongebruikte blijft eruit). Kost binarygrootte: macOS arm64 11 -> 22 MB.

Verificatie

Nieuwe integration_test/native_face_scan_test.dart draait als echte app op een
desktopplatform (waar de native-assets wél laden) en toont: de laag is beschikbaar,
katten/logo's geven nul gezichten, een verminkte JPEG is fail-closed. Lokaal
groen op macOS.
Deze test ving de kapotte build.

Buiten scope (apart)

  • De integratietest automatisch in CI draaien (Linux via xvfb, macOS/Windows op de
    spiegel) + de nu-dode DARTCV_LIB_PATH-steiger opruimen -> zie de follow-up-issue.
  • #891 (macOS-paddetectie) wordt hierdoor achterhaald en is gesloten.

De spiegel-CI op deze tak bevestigt dat de modulebuild ook op Linux/Windows slaagt.

## Wat Herstelt de privacy-gezichtsscan (OciWacht), die sinds de `opencv_core -> dartcv4` 2.x-migratie (#870/#873) stil kapot was, en dekt hem af met een integratietest. ## De bug dartcv4 2.x levert OpenCV modulair en sluit de meeste modules standaard UIT. `objdetect` (FaceDetectorYN) en `dnn` (YuNet) zaten daardoor niet in de build, dus `cv_FaceDetectorYN_create_1` gooide "symbol not found". De scanner klapte na de eerste afbeelding om naar niet-beschikbaar en meldde overal "niet gekeken" i.p.v. te scannen. **Geen enkele unit-test ving dit** — de native laag laadt niet onder `flutter test`, dus de detectietests sloegen zichzelf over. ## De fix `pubspec.yaml` neemt de nodige modules mee via `hooks: user_defines`: `[imgproc, imgcodecs, flann, features2d, calib3d, dnn, objdetect]`. objdetect hangt aan calib3d -> features2d/flann; vandaar de keten. Meteen de kleinst werkende build (al het ongebruikte blijft eruit). Kost binarygrootte: **macOS arm64 11 -> 22 MB**. ## Verificatie Nieuwe `integration_test/native_face_scan_test.dart` draait als echte app op een desktopplatform (waar de native-assets wél laden) en toont: de laag is beschikbaar, katten/logo's geven nul gezichten, een verminkte JPEG is fail-closed. **Lokaal groen op macOS.** Deze test ving de kapotte build. ## Buiten scope (apart) - De integratietest automatisch in CI draaien (Linux via xvfb, macOS/Windows op de spiegel) + de nu-dode `DARTCV_LIB_PATH`-steiger opruimen -> zie de follow-up-issue. - #891 (macOS-paddetectie) wordt hierdoor achterhaald en is gesloten. De spiegel-CI op deze tak bevestigt dat de modulebuild ook op Linux/Windows slaagt.
fix(privacy): herstel de gezichtsscan — dartcv4 2.x miste objdetect/dnn
All checks were successful
scans / scans (pull_request) Successful in 3m23s
7c38914ff3
De opencv_core -> dartcv4 2.x-migratie (#870/#873) brak OciWacht's
gezichtsscan stil: dartcv4 2.x levert OpenCV modulair en sluit de meeste
modules standaard uit. `objdetect` (FaceDetectorYN) en `dnn` (YuNet) zaten
daardoor niet in de build, waardoor `cv_FaceDetectorYN_create_1` een
"symbol not found" gooide. De scanner klapte na de eerste afbeelding om naar
niet-beschikbaar en meldde op elke dia "niet gekeken" i.p.v. te scannen — de
privacy-kernfunctie deed niets. Geen unit-test ving het, want de native laag
laadt niet onder `flutter test` (de detectietests slaan zichzelf over).

Fix: pubspec `hooks: user_defines: dartcv4: include_modules` neemt de nodige
modules expliciet mee. objdetect hangt aan calib3d, en die weer aan
features2d/flann, dus de hele keten plus dnn; imgproc/imgcodecs/core hoorden er
al bij. Meteen de kleinst werkende build — al het ongebruikte (photo, stitching,
video, contrib, ...) blijft eruit. Kost wel binarygrootte: macOS arm64 11 -> 22 MB.

Getoetst door een nieuwe integration_test/native_face_scan_test.dart, die op een
echt platform draait (waar de native-assets wél laden) en aantoont dat de laag
beschikbaar is, katten/logo's nul gezichten geven en een verminkte JPEG
fail-closed is. Deze test ving de kapotte build. Lokaal groen op macOS; Linux/
Windows automatisch in CI draaien is apart getrackt.

Docs (CHANGELOG, SOURCE_MAP, OCIWACHT.md) bijgewerkt; die laatste beschreef nog
de opencv_core/CocoaPod-opzet en een verificatie via flutter test die niet meer
werkt. SBOM geregenereerd (integration_test-dev-dep).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
brenno merged commit 3daedc7805 into main 2026-07-26 16:06:01 +00:00
Sign in to join this conversation.
No description provided.