diff --git a/personal/plans/balda-callee-prism-plan.md b/personal/plans/balda-callee-prism-plan.md index 5c0ad7ba..06a267a2 100755 --- a/personal/plans/balda-callee-prism-plan.md +++ b/personal/plans/balda-callee-prism-plan.md @@ -23,7 +23,7 @@ Balda ведёт исходную беседу и durable waits; Broker упра | Linux Codex | Совместимый nested sandbox при сохранённой изоляции Docker worker; сейчас namespace creation завершается отказом | | Recovery рабочих аккаунтов | Независимый recovery public key или secret store, off-host escrow и проверенное восстановление реальных аккаунтов; рабочие ключи пока не экспортированы | | Provider failure lifecycle | Реальные expiry/upstream revocation и повторная авторизация на отдельных тестовых identity; рабочую Claude-сессию отзывать запрещено | -| Codex read-only | Отдельная проверка фактического отказа записи и итоговый production-прогон закреплённого bootstrap | +| macOS worker readiness / Codex | Два production-прогона остановились до bootstrap на Virfield guest_keychain_failed; оба lease удалены. Нужны принятая GUI/SSH Keychain readiness текущего контроллера, production Story и Codex denied-write gate | Задачи и их статусы ведутся в локальном Beads/Prism, корневая Story `eb-71b7971ac3fdd03b8ff6b198`. Этот документ задаёт границы приёмки, а не второй backlog. Контракты и команды — в `docs/work-plan.md`, `docs/support.md`, `docs/recovery.md`, `docs/executors.md` репозитория Broker. diff --git a/personal/projects/balda/execution-broker.md b/personal/projects/balda/execution-broker.md index 685fa57f..866acaf5 100755 --- a/personal/projects/balda/execution-broker.md +++ b/personal/projects/balda/execution-broker.md @@ -46,7 +46,7 @@ Managed lifecycle и native wait restart проверены на развёрн - Production service acceptance: настоящий Callee Human → restart Broker/Prism → resume → шесть артефактов с проверенными SHA256 и provenance Git cache → `succeeded`, `cleanup=done`; Task и Story закрыты. - Реальная Balda-сессия: исправленный Mattermost-контекст → durable waits → Broker smoke → фактический Telegram approval → шесть скачанных артефактов с проверенными SHA256 → `cleanup=done` → итог в исходной Mattermost-беседе. Доставка и отсутствие дубликата подтверждены readonly API. - Настоящая macOS VM: verified Go archive через scoped tunnel, `tooling.json`, один XCTest без ошибок и сохранённый xcresult; восемь артефактов с проверенными SHA256, включая `repository.json`, VM cleanup подтверждён. -- Codex на macOS: две полные Story на свежих VM, включая restart Broker/issuer и восстановление того же run; quality, SHA256 всех артефактов, независимый повтор unit tests, credential checkpoint и cleanup подтверждены без нового OAuth. Последующий production-прогон остановился до bootstrap на Virfield guest_keychain_failed; lease удалён, идёт отдельная повторная проверка. Изолированный успех не считается завершением production-приёмки. +- Codex на macOS: две полные Story на свежих VM, включая restart Broker/issuer и восстановление того же run; quality, SHA256 всех артефактов, независимый повтор unit tests, credential checkpoint и cleanup подтверждены без нового OAuth. Две последующие production-попытки остановились до bootstrap на Virfield guest_keychain_failed; оба lease released, cleanup=done. До новой приёмки GUI/SSH Keychain текущего контроллера production macOS gate остаётся открытым. Изолированный успех не считается завершением этой проверки. - Реальные Make/C, Python, Node и JVM проекты на macOS и Linux; Docker builder/Runner/Callee cache hit и изменение Node SDK; durable смена окружения с двумя рестартами и одним выполнением внешнего действия; отдельная проверка реального `go run` при `/tmp noexec`. - Artifact input transfer/restart/cleanup и установка из Linux ARM64 release archive без исходников и Go прошли. - Runtime archives: все четыре платформы — native. Linux AMD64 проверен на физическом htpc x86_64; Darwin AMD64 — на MacBook Pro 13″ 2014, Intel i5-4278U, macOS 12.6.8 (21G725), Python 3.8.9 через pinned Virfield SSH. Оба AMD64-прогона проверили семь binaries, MCP/auth rejection, synthetic vault import/revoke, SQLite backup и graceful shutdown; рабочие provider credentials не использовались. @@ -57,6 +57,7 @@ Managed lifecycle и native wait restart проверены на развёрн | Область | Что остаётся | | --- | --- | +| macOS worker readiness | Две production-попытки после обновления bootstrap остановились на Virfield guest_keychain_failed до выполнения Runner/Callee. Обе VM удалены штатно. Нужны повторная приёмка GUI/SSH Keychain текущего Virfield и итоговая production Story; прежние изолированные успехи этот gate не закрывают | | Recovery | Выбран порядок: unattended восстановление рабочих ключей из защищённой копии, затем OAuth при неудаче восстановления/refresh. Production escrow ещё не настроен: нужен независимый recovery public key или secret store. Подготовлен helper для GPG escrow исходных master keys и безопасного восстановления key-files/Keychain; шесть тестов с синтетическими ключами прошли, включая восстановление encrypted vault, отказ при порче/чужом recipient и запрет замены существующего ключа. Рабочие master keys не экспортировались; production host-loss recovery не принят | | Docker providers | Linux OpenCode/DeepSeek прошёл две полные Story на свежих workers: реальные роли, повторное выполнение quality assertions, SHA256 всех артефактов, restart Broker/issuer, credential checkpoint/reuse, `cleanup=done`, без нового OAuth. Linux Claude также прошёл две полные Story на свежих workers, включая restart Broker/issuer: шесть ролей, независимый повтор unit tests, SHA256 семи артефактов каждого запуска, checkpoint и cleanup подтверждены; новый OAuth не понадобился. Linux Claude прошёл также component-проверку: фактический permission-handler обеих read-only ролей отклонил инъецированные ACP-запросы записи; marker не создан. Expiry/upstream revocation остаются открыты. Linux Codex блокируется sandbox текущего Docker host: bubblewrap не может создать user namespace при сохранённых cap-drop/read-only/no-new-privileges и default seccomp/AppArmor. Это воспроизведено offline без credentials. Исправления OAuth cache/ACP launcher закоммичены в c5f63ef и проверены на macOS; production macOS bootstrap обновлены, Docker gateway candidate не установлен; Story/reuse/restart ещё не приняты; для Linux OpenCode — upstream revocation. Проверка запрета записи OpenCode прошла на Linux и свежей macOS VM: обе read-only сессии получили прямые ACP-запросы записи, Callee отклонил их, marker отсутствовал; native plan policy не менялась. Это protocol fault injection, а не попытка tool call, выбранная моделью | | Provider lifecycle | Для macOS Claude не закрыта реальная expiry/upstream revocation; для macOS OpenCode/DeepSeek — upstream revocation; component-проверка фактического ACP-запрета записи обеими read-only ролями прошла на свежей VM с неизменённой native policy. Claude умеет сохранить явный отказ native cache как reauthentication-required и запросить OAuth при следующем admission; это не доказательство реальной provider-приёмки |