App Sandboxを有効にしたあと、KiFinderのスキャンが検出した顔0件で完了するようになりました。進捗画面は最後まで進むため、顔が一致しない正常なアルバムのように見えました。
Core MLの準備では、モデルを/private/tmp以下の固定ディレクトリへコンパイルしていました。サンドボックス化したアプリからは書き込めず、セッションの初期化が失敗し、try?がそのエラーをすべての埋め込みでnilへ変えていました。システムの一時ディレクトリを使って、アプリのコンテナ内に置くことで修正しました。
保存していた写真を実際のエンジンへ通して確認しました。壊れたビルドでは埋め込みが0件でしたが、修正後は同じ入力から5件と6件を取得できました。また、写真を保存または除外するたびにアルバム全体を再評価する処理もやめました。再評価は明示的な「Find new matches」から実行し、アルバムごとに一回のバッチ行列乗算を使います。
エラー処理にはまだ改善が必要です。モデルを初期化できない場合はスキャンを止め、成功したように見える空の結果ではなく、原因を説明するべきです。