diff --git a/personal/projects/virfield.md b/personal/projects/virfield.md index 384b0883..575c5773 100755 --- a/personal/projects/virfield.md +++ b/personal/projects/virfield.md @@ -65,6 +65,18 @@ macOS make check/build/Staticcheck прошли; настоящий read-only vo - Повторы `vm_acquire` — с новым idempotency key, если меняется ключ SSH/шаблон; тот же ключ и body только для настоящего retry. - Клиентская сторона (не virfield): auto-mode classifier заблокировал `vm_acquire` для шаблона, который пользователь не называл; разрешение нужно давать явно. +## Диагностика DDG Review Keychain, 2026-10-23 + +**Классификация: проблема дополнительного test fixture; дефект подписи приложения или Virfield не подтверждён.** Подпись Review `Developer ID Application: Duck Duck Go, Inc. (HKE973VLUW)` прошла `codesign --verify --deep --strict` в VM. Речь о runtime-ключе шифрования данных браузера, а не о приватном ключе сертификата сборки. Подпись идентифицирует приложение для проверки доступа, но не разблокирует keychain; см. [Apple: Access Control Lists](https://developer.apple.com/documentation/security/access-control-lists). + +В lease `lease-f7b5ad7345b33883e6ef9062062125f7` клиент тестов сам создал дополнительный `workspace/fire-regression/keychain-fixture/review.keychain-db`, записал синтетический AES fixture и затем изменил default/search list VM на этот keychain. Это не keychain, подготовленный Virfield. Через System Events прочитан точный запрос: “DuckDuckGo Review wants to use the ‘review’ keychain. Please enter the keychain password.” Успешные CLI unlock и отдельный GUI helper (status 0) не доказали доступ target app. Точная причина повторного запроса разблокировки этого fixture не установлена; необходимость менять ACL `login` из этого запроса не следует. ACL существующего ключа в `login` не изменялся. + +Контроль на свежем lease `lease-190e6d0deae478e311732c28e898f902`, тот же golden `image-f11d9a1ee2991eada08c4f734c33df6d`, тот же подписанный app (Signed Time 11:17:24 UTC), **без дополнительного keychain и без изменения ACL**: до запуска отсутствовали обе версии browser encryption item; приложение само создало v2 item в штатном `login` (metadata cdat 11:52:35 UTC). SecurityAgent отсутствовал. XCTest после обычной подготовки UI fixture запустил Review, загрузил тестовую страницу и дошёл до Fire-диалога без запроса Keychain. + +Первые два контрольных запуска не являются успешными UI-прогонами: первый остановился в LetsMove `PFMoveToApplicationsFolderIfNecessary → NSAlert.runModal` (подтверждено sample), второй — на отсутствующем loopback tests-server. После установки существующей в репозитории настройки `moveToApplicationsFolderAlertSuppress` и запуска штатного tests-server третий дошёл до Fire-диалога. Его итоговый xcresult не экспортирован: lease удалён через journal cleanup в 11:57:26 UTC при expires_at 12:50:44 UTC. Предыдущий lease аналогично удалён в 11:48:21 UTC при expires_at 12:16:36 UTC. Из исследующего чата release для этих двух VM не вызывался; инициатор cleanup по доступному журналу не установлен. Полный зелёный UI-прогон этим контролем **не подтверждён**. + +Практическое правило для DDG Review: сначала использовать штатные default/search list и дать приложению создать собственный тестовый runtime-ключ; не добавлять отдельный keychain по предположению о неисправной подписи. При необходимости отдельного fixture проверять доступ именно target app в контексте его запуска. Готовность native GUI/SSH probe Virfield и наличие подписи сами по себе не квалифицируют произвольный дополнительный keychain. + ## Текущая работа 2026-10-23: UI readiness Локальный `main` содержит коммиты `fd980dd`, `c7d75e7`, `1126997`, `6203177`, `5f605d8`, `7b5c124`; рабочее дерево чистое. Полный `make check` с race-тестами прошёл. Кэш Xcode на Mac очищен с 41 до 19 ГБ: удалены две распакованные копии после сверки исходных XIP, четыре XIP сохранены. Новый код повторяет очистку после использования архива и при старте daemon; установленная production версия пока не обновлена. Для Xcode-образов и новых disposable workers добавлены настройка unattended Automation Mode и настоящий 1/1 XCUITest gate; компактный MCP status и путь pinned SSH без CLI документированы. На действующем Monterey lease native UI fixture прошёл 1/1, а `automationmodetool` сообщил `DOES NOT REQUIRE user authentication`. Это проверка текущей VM, не доказательство работы ещё не установленного нового daemon.