[2026-10-16] eagle: personal/plans/balda-callee-prism-plan.md personal/projects/balda/execution-broker.md

This commit is contained in:
Alexey Martemyanov committed 2026-10-16 16:54:02 +06:00
1 parent 530eed962a
commit 7ce31ab6ce
2 files changed
+10 -6

No files matched your search

+5 -4
View File
@@ -16,7 +16,7 @@
| macOS bootstrap | Codex: `macos-codex-review-probe-20261016.tar.gz`, SHA256 `463f47ce73bc76e02082faa8b34f3619a135012ee1f077bff5aa536cd7843d62`, Runner с Darwin zombie-group fix, workflow `b09f2be2` и ограниченный ACP audit. Claude/OpenCode сохраняют `*-c5f63ef.tar.gz`; Xcode — `macos-xcode-fee5409.tar.gz`. Старые assets/config сохранены |
| Оба Balda | Чистый upstream `b5f7d5b4`, image `sha256:6703dfc84b0d383cd0bbdd014a803074963a1ce87a11ae036b46cd3a3c0389bd`; подробности в [[personal/projects/balda/setup]] |
| Managed plugin | rc32 у обоих, Enabled=true, Drifted=false; прежние plugin data, revisions и marketplace сохранены |
| Release archives | `0.1.0-rc.32`, source `fee5409`; четыре платформенных архива и plugin в `dist/`, SHA256 проверены |
| Release archives | `0.1.0-rc.33` candidate, source `d296c73`; четыре runtime archives и plugin в `dist/`, SHA256 и native binary-only checks на всех четырёх платформах проверены. `make check`/race/vet прошли. Публикации нет; rc32 сохранён |
Docker socket и daemon group отсутствуют у coding workers. Административный доступ к Docker остаётся у gateway. Основные модели, home volumes и история обоих Balda сохранены; сессии не сбрасывались. Серверная проверка Codex auth: models endpoint отвечает HTTP 200 у обоих инстансов. У @balda дополнительно проверена реальная генерация в ephemeral read-only сессии: `AUTH_OK`, `turn.completed`, exit 0. Исходный аккаунт сохранён; Balda перечитал credentials после обычного перезапуска.
@@ -42,6 +42,8 @@ Managed lifecycle и native wait restart проверены на развёрн
## Проверки
2026-10-16 принят protected host-loss recovery реальных аккаунтов: владелец разрешил зашифрованную копию на независимом HTPC; GPG recipient создан только там, master keys зашифрованы в памяти Mac, ciphertext и matching vault переданы по pinned SSH и SHA256-проверены. На физическом Linux без Keychain Mac native rc33 issuer восстановил Codex/Claude/DeepSeek, выполнил issue/checkpoint/release, read-only API каждого провайдера ответил HTTP 200. Временные plaintext key-files удалены; backup, private recipient, runtime archive и restore helper сохранены отдельно от lease workspace с правами 0700/0600. Рабочие vault/account/session не изменены. Доказательства: `state/broker-acceptance-20261016/offhost-working-restore-verification.json`, `offhost-retention-verification.json`, `offhost-before-lease-release.json`.
2026-10-16 отдельно принята natural access-token expiry Claude на Docker: token истёк 2026-10-15, свежий worker обновил сессию и успешно выполнил specify/design/breakdown. До реализации run отменён; Broker сохранил новый cache того же account/organization, освободил identity и удалил worker/volume. Пять артефактов проверены по размеру/SHA256. Доказательство: `state/broker-acceptance-20261016/claude-expiry-verification.json`. Upstream revocation, повторный browser login и macOS native refresh остаются отдельными непроверенными пунктами.
- Полные race/vet Broker на macOS ARM64 и Linux ARM64; Callee adapter, source/binary govulncheck — 0 reachable vulnerabilities, secret scan — без находок.
@@ -60,9 +62,8 @@ Managed lifecycle и native wait restart проверены на развёрн
| Область | Что остаётся |
| --- | --- |
| Recovery | Выбран порядок: unattended восстановление рабочих ключей из защищённой копии, затем OAuth при неудаче восстановления/refresh. Это отдельная гарантия восстановления после потери хоста/Keychain; обычный restart и повторное использование авторизаций уже проверены. Production escrow ещё не настроен: нужен независимый recovery public key или secret store. Отсутствие escrow не блокирует исправления Virfield/Docker. Подготовлен 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 прошёл две полные Story на свежих workers с `nested-v1`: все шесть ролей, quality, независимые unit tests (4/4 и 3/3), SHA256 артефактов, restart Broker/gateway/issuer, checkpoint/reuse и cleanup. Штатный Codex fallback сохраняет Docker proc masks; отдельные AppArmor/seccomp профили сохраняют non-root, cap-drop, read-only root и no-new-privileges. Реальная попытка записи в read-only workspace отклонена. Исправление `f9ca7c3`, gateway развёрнут с точным worker pin; итоговая Story через production Broker/Prism также прошла все шесть ролей, quality, независимые unit tests (3/3), SHA256 артефактов и cleanup=done. Default Docker policy не поддерживает нужные namespaces. Expiry/upstream revocation остаются отдельными gates. Проверка запрета записи 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-приёмки. 2026-10-16 владелец уточнил: использовать существующие боевые доступы, сами аккаунты не трогать. Вывод агента об отмене запрета на отзыв рабочей Claude-сессии был ошибочным. Создание/отзыв/ротация ключей и сессий ради приёмки не разрешены; вход в кабинеты провайдеров не требуется |
| Provider lifecycle | На Linux приняты контролируемые native отказы Codex (401/token_expired), Claude (Authentication required, reauthentication_required) и DeepSeek (invalid API key) на отдельных synthetic vault. Все runs failed/cleanup=done, credential owners освобождены, артефакты сохранены/SHA256-проверены, secret scans прошли. Natural expiry/refresh Claude принята отдельно. Реальный upstream revoke существующей авторизации и последующий browser login не выполнялись; аккаунты менять запрещено. Отрицательные прогоны не заменяют этот исходный пункт полного плана и не доказывают macOS failure lifecycle |
Источник требований — `docs/work-plan.md`. iPad, прикладные UI/PR workflows и права Obsidian принадлежат вызывающему проекту или Balda.
@@ -78,7 +79,7 @@ Production Story `run-d643dd9154d4766fe82b72805dabdc9e` завершилась `
Итоговые `make check` (race/vet/scripts), Callee compatibility/race, Staticcheck (0 findings), source/binary Govulncheck и source/artifact secret scans прошли. Достижимых уязвимостей нет. Семь binaries собраны для Darwin/Linux ARM64/AMD64; это cross-build gate, не новая native archive-приёмка. Результаты — `source-validation.json`, `cross-build.json`, `staticcheck-final.log`.
Beads `.6.4` macOS и `.6.5` Linux закрыты. Общая Story остаётся открытой по двум первоначальным пунктам: `.4` — host-loss recovery, `.6.6` — реальные provider expiry/revocation. Не выбран независимый recovery recipient/store и reachable off-host destination; локальных GPG public keys/rclone remotes нет, настроенный HTPC SSH route недоступен, Kraken не прошёл SSH banner. Отдельных test identity в vault нет. Владелец разрешил использовать существующие боевые доступы и уточнил, что сами аккаунты трогать нельзя; создание/отзыв/ротация ключей и сессий ради теста не разрешены. Реальный upstream revocation остаётся непроверенным, вход в кабинеты не запрашивать. Подготовлен `escrow-plan.json` для трёх рабочих identity, master keys не экспортировались; рабочие сессии не отзывались. Предыдущие автоматические отказы rollout/production-прогонов сняты явными подтверждениями владельца; соответствующие разрешённые действия выполнены.
Beads `.6.4` macOS, `.6.5` Linux и `.4` protected host-loss recovery закрыты. Кандидат rc33 собран и нативно проверен на всех четырёх платформах. В полной приёмке остался `.6.6`: реальный upstream revoke и повторная browser authorization; по указанию владельца существующие аккаунты менять нельзя. Контролируемые отказы на synthetic credentials для всех трёх провайдеров прошли и записаны отдельно. Рабочие сессии не отзывались; destructive gate не отмечен пройденным.
## Конфигурация и восстановление