Хотел: конвейер, который читает мою библиотеку Фото прямо на ноутбуке и ничего в неё не пишет. Оригиналы ноутбук не покидают: наружу уходит только уменьшенный JPEG без EXIF и координат, а в библиотеке нет ни записи, ни правки альбомов, ни метаданных. Опись — место, оценки Apple, метки, лица, избранное — ложится в SQLite. 3 766 кадров описались за секунду: кадры при этом не открываются, только каталог.
Споткнулся: разрешение «Фото» в системных настройках для этого не годится. База каталога лежит внутри пакета библиотеки, и процесс без «Полного доступа к диску» получает Operation not permitted. Диалога на экране нет — macOS просто отказывает, и первые минуты я искал ошибку в коде, а не в правах. Второй раз споткнулся, когда доступ выдал не тому процессу: терминалу, а не интерпретатору, который потом запускает ежедневный прогон. Первая приёмка конвейера 22.09 так и закрылась с результатом 2 из 16: два первых пункта — приращение описи и дозревание свежих кадров — не проверились именно из-за доступа не тому процессу.
Решил: полный доступ к диску получает сам интерпретатор из виртуального окружения, а скрипт установки ежедневного задания перед регистрацией пробует прочитать базу Фото и при отказе печатает, что и где разрешить. Опись приращённая: повторный запуск ничего не меняет, новые кадры получают статус «новый» и день зреют, пока Apple досчитает свои оценки. Каждый прогон оставляет строку с числами: сколько кадров, сколько новых, сколько исчезло.
Чем плачу: полный доступ к диску у одного процесса — широкое право ради одной базы; я принял это, потому что процесс мой и запускается только на моём ноутбуке. Ежедневный прогон живёт, пока ноутбук включён, окно куратора после перезагрузки поднимаю руками. И два пункта приёмки до сих пор ждут свежих кадров, которых я после отпуска пока не добавлял.
#отказ