[2026-10-16] eagle: personal/projects/archive/broker-before-main-deployment-2026-10-16.md personal/projects/balda/execution-broker.md work/projects/cpm-pr0-episode-telemetry-summary-2026-10-16.md

This commit is contained in:
Alexey Martemyanov committed 2026-10-16 18:20:09 +06:00
1 parent 328e56026e
commit f684e6a9cc
3 files changed
+180 -97

No files matched your search

@@ -0,0 +1,108 @@
# Карточка Broker до сверки main и production
Историческая копия перед обновлением main/deployment 2026-10-16. Текущее состояние: [[personal/projects/balda/execution-broker]]. Старые слова «текущий/актуальный» ниже относятся к моменту этой копии.
---
# Execution Broker — эксплуатация
Проверено: **2026-10-16** по исходникам, работающим контейнерам и реальным запускам. Приёмка закрыта в согласованном проверенном объёме; Broker готов к релизу и боевой эксплуатации в принятых конфигурациях.
## Развёрнутый комплект
| Компонент | Текущее состояние |
| --- | --- |
| Репозиторий | `/Users/admin/Developer/execution-broker`, `codex/production-readiness`; основной комплект `fee5409`, Broker hotfix `1b09e0f` |
| Broker | `sha256:921bb903be546b4703ed17d994cda3357421729a72383dfb1199c84f25349122`, версия `0.1.0-rc.32+approval30.1b09e0f`; исправленные macOS assets и workflow закреплены отдельно |
| Gateway | `sha256:f13b362a49100050a1ae8a70db1a9c7a4d7e059dc7d71b413dc29b681ab21f99`, версия `0.1.0-rc.32+nested-sandbox`; проверенный `nested-v1` включён только для `linux-codex-default` |
| Prism | `execution-prism-adapter:fee5409`, версия `0.1.0-rc.32` |
| Smoke worker | `execution-broker-worker:fee5409`; один SHA256 image pin в Broker и gateway |
| OpenCode worker | `execution-broker-executors:workflow-alias-20261015`, image `sha256:99e4c786a47fe03877dd4d8186528a5e4fe8676f5677116f89c8543e1d942734`; одинаковый pin в Broker/gateway, оба workflow `docker/story` и `opencode/story`, Go SDK 1.26.9 |
| Codex Linux worker | `sha256:e9e1ab5e8c0f9f7c64d441d68a5c3c6db34462e641bbeb7b38367d1c9a194fea`; согласованные Broker/gateway/worker pins `b09f2be2`, reviewer deny, `nested-v1`. Runner/Callee/Codex binaries побайтно совпадают с прежним принятым `5e8568bd`; новая policy прошла production Story, отмену и restart/reuse |
| 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.33` candidate, source `ae92c15`; четыре 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 после обычного перезапуска.
## Инструменты и артефакты
`execution_profiles` показывает разрешённые tooling profiles. Подготовка окружения задаётся декларативно: platform, версии, approved packages/archives, SHA256 и readiness probes. Новый стек требует подходящего operator profile; Makefile сам по себе не устанавливает зависимости.
В текущем контуре Go 1.26.9 задан стандартным profile для Linux OpenCode и четырёх macOS workers. Специального Go installer в Runner больше нет. Tooling cache хранит проверенные immutable archives, ограничен 4 GiB; фактические версии сохраняются в `tooling.json`. Временные build products выполняются внутри приватного каталога run; общий Linux `/tmp` остаётся `noexec`.
Отдельный Git cache хранит immutable bundles по repository/commit с лимитом 4 GiB, durable deadline holds и отдельными run-scoped токенами. Disposable checkouts не разделяют mutable worktree и upstream credentials. В production `linux-smoke` подключён к внутренней control-сети Broker; cache/inputs/tooling требуют рабочего маршрута к Broker, одного публичного HTTPS clone недостаточно.
Durable смена окружения использует явно заданный operator checkpoint: остановка Callee и credential fence → snapshot исходников с сохранением base ancestry → cleanup старого worker → `execution_reconfigure` → отдельный owner approval → новая immutable среда и фиксированный continuation. Task и исходный deadline сохраняются; максимум две замены, один admission на checkpoint, отмена охватывает цепочку. Ожидание approval не резервирует worker capacity. Это opt-in политика workflow; в стандартных coding packs checkpoints по умолчанию не включены. Произвольный live graph не сериализуется и не переигрывается. Требуется `execution/v3`.
Artifact inputs реализованы и развёрнуты через `execution/v2`: до восьми файлов, суммарно до 1 GiB, точные source run/name/SHA256 и исходная сессия. Source run должен быть терминальным с `cleanup=done`; transactional retention holds защищают принятые зависимости. Передача возобновляется до начала исполнения.
## Продолжения и одобрения
Generic webhook в текущем Balda запускает изолированное задание. Канонический канал исходной сессии остаётся Mattermost; Telegram approval не меняет её locator. Продолжение исходной сессии использует `balda.state` и `balda.session.wait`; попытка и наблюдатель сохраняются до Start/retry. Потерянный admission восстанавливается через `execution_lookup`, отмена закрывает и поздний идентичный запрос. Прежние callback routes Broker приостановлены; недоставленные cursors сохранены.
Telegram approval bot получает вопрос только для явно выбранных сессий; иначе вопрос принадлежит исходной беседе. В текущем контуре `telegram_approvals.timeout_seconds=1800`: окно ответа — 30 минут. `min_run_ttl_seconds=3600` требует для новых запусков выбранных сессий общий TTL не меньше часа; более короткий запрос получает `approval_window_too_short` до admission. TTL включает очередь, планирование, ожидание ответа и исполнение; исходный deadline остаётся жёсткой границей и при появлении вопроса не продлевается. Сообщение сначала отправляется без кнопок, message ID сохраняется в state, затем публикуются controls. Рестарт завершает прерванную публикацию или renewal без повторного callback. Устаревшая копия очищается при callback до сохранения update cursor. Ответ владельца передаётся через bound `execution_respond`; модель не подменяет его. `execution_retry` сохраняет точный task, Story, revision, executor и действительное одобрение; новый scope требует нового решения. Для environment checkpoint используется `execution_reconfigure`; обычный retry таких runs запрещён.
Managed lifecycle и native wait restart проверены на развёрнутом Balda. Реальный conversational smoke прошёл: модель использовала исходные Story/Task, подтвердила observer/recovery waits, дождалась фактического Telegram-ответа владельца и получила `succeeded`, `cleanup=done`. Все шесть артефактов скачаны с проверкой SHA256; единственный итоговый ответ подтверждён через Mattermost API в исходной беседе, оставшиеся waits отменены. Приватные доказательства: `state/balda-channel-context-20261015/`. Outage/restart реальной модельной беседы также прошёл: Balda получила HTTP 502, затем Broker/Prism/Balda были перезапущены; сохранились тот же run/Story, provider thread и исходный deadline. После фактического Telegram approval подтверждены `succeeded`, шесть скачанных SHA256-проверенных артефактов, `cleanup=done`, закрытие Story/Task и единственное сообщение о завершении restart-приёмки в исходном Mattermost. Native waits отменены, duplicate admission и остаточных worker container/volume нет. Существующие сессии принимают новый capability snapshot через обычный `/reset`; обновление само их не сбрасывает.
## Проверки
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 — без находок.
- Развёрнутый Balda source `b5f7d5b4`: чистый upstream без локальных патчей. Полный race, lint, architecture, SQLite/PostgreSQL integration, migration validators, govulncheck (0 reachable), replay/NATS/ingress, managed plugin lifecycle и native wait restart прошли. Обновление сохранило авторизации, прежние provider threads, locator/snapshots и все 2277 прежних событий основного инстанса. Общие MCP совпадают; Eagle Asana readonly подтверждён. Backups и proofs: `state/balda-upstream-merged-20261015/`.
- 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: production gate принят 2026-10-16 на installed Virfield `8bfff9f`. Story `eb-3b52387d73c10e8d64ad1ef2`, итоговый run `run-12f093299e237f03a7bb9b70327efcc5` использовал реально сохранённый owner-approved plan. Reviewer фактически выполнил `os.open` и получил EPERM; восемь артефактов повторно скачаны и сверены по size/SHA256, независимый checkout прошёл четыре теста, содержит ровно два новых committed файла и остаётся чистым. Prism Story closed, `succeeded`, `cleanup=done`; все три credential identity unrevoked/unowned, Virfield workers/jobs — 0, девять goldens сохранены. Две более ранние свежие VM Story/restart и три исторические pre-bootstrap ошибки сохранены в прежних receipts. Текущая проверка закрывает macOS readiness и Codex denied-write.
- Реальные 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 не использовались.
Сервисные fixtures не подтверждают выбор tools и доставку результата моделью в настоящей беседе.
## Принятый объём и ограничения
2026-10-16 владелец явно ответил **«Да, закрыть в проверенном режиме»**: закрыта приёмка подтверждённых конфигураций с перечисленными ниже непроверенными ограничениями. Публикация релиза не выполнялась.
| Область | Проверено / границы |
| --- | --- |
| 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 не создан. Natural expiry/refresh Claude принята отдельно; намеренный upstream revoke исключён из согласованной приёмки и не проверен. 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. Контролируемый Codex 401/token_expired проверен на отдельном synthetic vault; реальный upstream revoke и browser login исключены из принятого объёма и не проверены. Проверка запрета записи OpenCode прошла на Linux и свежей macOS VM: обе read-only сессии получили прямые ACP-запросы записи, Callee отклонил их, marker отсутствовал; native plan policy не менялась. Это protocol fault injection, а не попытка tool call, выбранная моделью |
| 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 не выполнялись; аккаунты менять запрещено. По явному решению владельца реальный upstream revoke и последующий browser login исключены из закрываемого объёма и остаются непроверенным ограничением; отрицательные прогоны не считаются их прохождением и не доказывают macOS failure lifecycle |
Источник требований — `docs/work-plan.md`. iPad, прикладные UI/PR workflows и права Obsidian принадлежат вызывающему проекту или Balda.
## Проверка 2026-10-16
Доказательства и копии артефактов сохранены в `state/broker-acceptance-20261016/`. `verification.json` подтверждает macOS production Story, восемь повторно скачанных артефактов, независимые четыре теста, реальный reviewer EPERM и credential settlement. Source fixes перенесены в текущую ветку; функциональные изменения сохранены в `ee2ed5a`, чистый Staticcheck — в `a80a471`.
Linux rollout выполнен после явного разрешения владельца и при нуле активных runs. Реальные container config и image pack сверены: новый image `e9e1ab5e8c0f`, workflow `b09f2be2` у Broker/gateway/worker, health 200. Старые конфиги/образы сохранены. `linux-policy-promotion.json`, `linux-policy-live-config.json` и `linux-policy-sandbox.json` содержат проверку pins, настоящие sandbox write-denial checks и cleanup.
Production Story `run-d643dd9154d4766fe82b72805dabdc9e` завершилась `succeeded/cleanup=done`: implementation, verifier, reviewer, quality, семь SHA256-проверенных артефактов. Независимый checkout повторил четыре unit tests и подтвердил ровно два авторских source files. Повторный fresh-worker run `run-37e61ecfcc08925e14b1531ef84b8b57` пережил restart Broker/gateway/issuer во время implementation: тот же run, исходный deadline и credential owner generation170 сохранились; затем `succeeded/cleanup=done`, ещё семь проверенных артефактов, независимые 4/4 tests и generation172 checkpointed/unowned/unrevoked. Файлы `production-linux-independent-verification.json` и `production-linux-restart-independent-verification.json`.
Отдельная отмена `run-b2625286a00b071284fa48ad00952c7c` во время implementer дала `canceled/cleanup=done`, сохранила пять хешированных артефактов и credential checkpoint; generation167→169, owner cleared, revoked=false. Собственных worker containers/volumes после трёх запусков нет. Prism спроецировал все исходы, закрыл Story `eb-230154345220ae67e434f774`; повторный sync пуст. Все три рабочие credential identity свободны и unrevoked. Итог — `production-cycle-final.json`; секреты в трёх наборах артефактов не найдены.
Итоговые `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, `.4` protected host-loss recovery, `.6.6`, `.6` и корневая Story `eb-71b7971ac3fdd03b8ff6b198` закрыты; все дочерние задачи закрыты. Основание для `.6.6` — явное решение владельца принять проверенный объём, а не утверждение о выполненном отзыве аккаунтов. Финальный rc33 source `ae92c15` собран с согласованной документацией; все четыре exact runtime archives прошли native binary-only checks, `make check`/race/vet и SHA256 проверены. Итог: `state/broker-acceptance-20261016/final-release-readiness.json`, `beads-acceptance-closure.json`, `rc33-release-verification.json`. Публикации нет. Блокеров в согласованном объёме нет; реальный upstream revoke и browser login остаются непроверенными ограничениями. Рабочие сессии не отзывались, тестовые ресурсы очищены. Recovery-копия сохранена вне тестовых leases с проверенным исходным runtime rc33 `d296c73` (до финального документационного commit).
## Конфигурация и восстановление
Приватный Compose: `state/deploy/compose.production.json`; конфиги `broker.json`, `worker.json`, assets в `state/deploy/assets`. Токены находятся только в secret-файлах.
После выбора согласованного проверенного комплекта применять из репозитория:
```bash
docker-compose -f state/deploy/compose.production.json -p execution-broker up -d --no-build worker broker prism
```
До смены комплекта завершить runs/cleanup, сохранить state/config/image pins и исходные immutable assets. Сам Git commit deployment не меняет.
Backup перед текущим обновлением: `state/backups/20261015-before-rc32`. Проверены SHA256, 31 SQLite database и inert restore шести компонентов, включая encrypted credential vault. Все три credential identity были освобождены и checkpointed. Restore не запускал сервисы; master keys Keychain в backup отсутствуют. Это подтверждение восстановления production snapshot на том же хосте. Отдельная native-проверка перенесла синтетический encrypted vault с macOS ARM64 на физический Linux AMD64: отсутствие и подмена ключа отклоняются без перезаписи ciphertext, отдельный escrow key восстанавливает запись, revoke работает, fresh enrollment в новый vault с новым ключом проходит. Production credentials и Keychain keys в этом тесте не использовались. Он не заменяет escrow или повторную авторизацию реальных аккаунтов после потери хоста.
Актуальные согласованные state/home/config backups обоих Balda и exact image/binary hashes после обновления на чистый upstream `b5f7d5b4`: `state/balda-upstream-merged-20261015/`, итог — `final-verification.json`. Предыдущие backup и restart/native/off-host fixture receipts: `state/balda-upstream-hooks-20261015/`; более ранние state/home backups: `state/balda-upstream-rollout-20261015/`. Рабочие account/config hashes после обновления совпали с исходными. Приватные отчёты проверок основного комплекта: `state/broker-rc32-rollout-20261015/`. Broker hotfix: `state/telegram-timeout-20261015/`, включая консистентный `broker.before.db` с успешными integrity/foreign-key checks и сохранённый Compose для отката. Hotfix прошёл полный `make check`, Linux ARM64 race для Broker/config/HTTP API и govulncheck без достижимых уязвимостей. Release archives rc32 остаются неизменными и содержат исходный `fee5409`; hotfix развёрнут отдельным Broker image. Native Darwin AMD64 proof: `state/balda-pr62-review-20261015/native-darwin-amd64.json`. Проверочный скрипт поддерживает штатный Python 3.8; публичные rc32 archives не перезаписывались. Приватные отчёты не входят в release archives.
Контракты и процедуры: `docs/protocol.md`, `docs/tooling.md`, `docs/environment-changes.md`, `docs/repository-cache.md`, `docs/operations.md`, `docs/telegram-approvals.md`, `docs/recovery.md`, `docs/testing.md`.
+32 -82
View File
@@ -1,102 +1,52 @@
# Execution Broker — эксплуатация
Проверено: **2026-10-16** по исходникам, работающим контейнерам и реальным запускам. Приёмка закрыта в согласованном проверенном объёме; Broker готов к релизу и боевой эксплуатации в принятых конфигурациях.
Проверено: **2026-10-16** по GitHub, исходникам, работающим контейнерам, binary hashes, MCP и сохранённому state. Broker и Virfield очищены от планов и персональных журналов в tracked файлах; актуальная установка и приёмка ведутся в Obsidian.
## Развёрнутый комплект
| Компонент | Текущее состояние |
| Компонент | Фактически установленное состояние |
| --- | --- |
| Репозиторий | `/Users/admin/Developer/execution-broker`, `codex/production-readiness`; основной комплект `fee5409`, Broker hotfix `1b09e0f` |
| Broker | `sha256:921bb903be546b4703ed17d994cda3357421729a72383dfb1199c84f25349122`, версия `0.1.0-rc.32+approval30.1b09e0f`; исправленные macOS assets и workflow закреплены отдельно |
| Gateway | `sha256:f13b362a49100050a1ae8a70db1a9c7a4d7e059dc7d71b413dc29b681ab21f99`, версия `0.1.0-rc.32+nested-sandbox`; проверенный `nested-v1` включён только для `linux-codex-default` |
| Prism | `execution-prism-adapter:fee5409`, версия `0.1.0-rc.32` |
| Smoke worker | `execution-broker-worker:fee5409`; один SHA256 image pin в Broker и gateway |
| OpenCode worker | `execution-broker-executors:workflow-alias-20261015`, image `sha256:99e4c786a47fe03877dd4d8186528a5e4fe8676f5677116f89c8543e1d942734`; одинаковый pin в Broker/gateway, оба workflow `docker/story` и `opencode/story`, Go SDK 1.26.9 |
| Codex Linux worker | `sha256:e9e1ab5e8c0f9f7c64d441d68a5c3c6db34462e641bbeb7b38367d1c9a194fea`; согласованные Broker/gateway/worker pins `b09f2be2`, reviewer deny, `nested-v1`. Runner/Callee/Codex binaries побайтно совпадают с прежним принятым `5e8568bd`; новая policy прошла production Story, отмену и restart/reuse |
| 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.33` candidate, source `ae92c15`; четыре runtime archives и plugin в `dist/`, SHA256 и native binary-only checks на всех четырёх платформах проверены. `make check`/race/vet прошли. Публикации нет; rc32 сохранён |
| Broker Git | `/Users/admin/Developer/execution-broker`, только `main`; local HEAD и GitHub `13c29ac6ccb3ec59cb7fa4d824bdfb350bf540e6`, checkout чистый |
| Broker | `0.1.0-rc.34`, image `sha256:04ff684bf5b051e15ff603e7cd4a8adba35a000b8b222205b197549f54b1695e`; binary сверён с source `13c29ac` |
| Prism | `execution-prism-adapter 0.1.0-rc.34`, image `sha256:2683c10db981f4b1912b372a48f8175e751fe5de30c2282390fb345fdeb533aa`; код adapter находится в том же Broker repo/main |
| Gateway | `execution-worker 0.1.0-rc.34`, image `sha256:35b442404db5da72907936a57798d18491d54c0bbf6423f4969f18cc6b388e5c`; новые Runner/Callee также вложены в оба image-build contexts |
| Native credential issuers | Все три binary из Broker `13c29ac`, `rc34`; прежние launchd definitions, vault и токены сохранены |
| Callee | Последний проверенный upstream `95f7f1105489f26d0aa24c4b9b76296b34c503c7`; Broker adapter и security override `x/net v0.60.0`, Go 1.26.9 |
| Оба Balda | Чистый upstream `3a58254bb05747fdeecde070b1828e770ed589a4`, image `sha256:ee0567594b8f8422d71b3bb37aa47ef1222b089af6b24e17d50ac9c63a4ef22f`, без локальных патчей; [[personal/projects/balda/setup]] |
| Linux images | Smoke `sha256:2b82611cb0f35b1be006faadcad05eed558e675576cc00ecccaeb9d43cac2f81`; OpenCode/DeepSeek `sha256:526ee8382465e8f5fe3e9c55d78b3b62dff83cc8e1085c8b6f7935d2aba7848c`; Codex `sha256:cdce756babb910ac141ad926b2297d25784532d069ec774a8321a23d4e4ecd92`; dynamic Claude `sha256:a785411160b4384887654c2179cb19d92bf9ff91e1c5f5d60ccccf8ad1c1ba87`. Во всех четырёх фактические Runner/Callee bytes сверены с latest builds |
| macOS bootstrap | Все четыре profiles указывают на новые `*-rc34-13c29ac.tar.gz`; Runner/Callee hashes проверены. Provider runtimes и согласованные workflow policies сохранены |
| Virfield | Опубликованный latest — `v2.1.0`, source `9658646`. После двух fresh-VM preparation failures временно установлен исправленный **кандидат v2.1.1**, source `2c64888`, для native проверки. Он пока не опубликован; [[personal/projects/virfield]] |
| Release archives Broker | Исторически принятые `rc33` из `ae92c15` сохранены в `dist/`, четыре native targets проверены. Текущий production `rc34/13c29ac` новее; GitHub Release Broker не публиковался |
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 после обычного перезапуска.
Broker, gateway и workers имеют согласованные immutable pins. macOS profiles используют `macos27`; роли Codex — pack `b09f2be2`, Claude/OpenCode — собственный `1b8b5ded`. Нельзя подставлять workflow Codex в OpenCode image.
## Инструменты и артефакты
## Проверка обновления
`execution_profiles` показывает разрешённые tooling profiles. Подготовка окружения задаётся декларативно: platform, версии, approved packages/archives, SHA256 и readiness probes. Новый стек требует подходящего operator profile; Makefile сам по себе не устанавливает зависимости.
- Broker `make check` (race/vet/scripts), Callee adapter/race, полный Balda race/lint, managed plugin lifecycle и native wait restart прошли на новых исходниках.
- Два production Balda независимо прошли authenticated discovery: 26 Broker tools и 5 Prism tools; `execution_profiles` доступен из обеих network namespaces.
- Exact deployed Linux smoke image прошёл настоящий Callee → fixed Human → restart → пять артефактов → cleanup, включая non-root, read-only root, cap-drop и отсутствие bind mounts/Docker socket. Это изолированный fixture без production provider credentials и сообщений.
- Новый Claude image построен штатным resolver развёрнутого gateway; provider calls и worker start не выполнялись. Binaries всех четырёх Linux profiles совпадают с latest source builds.
- Сохранены все **2277** прежних событий основного Balda, 49 session metadata/bindings, provider sessions, home volumes, environment values, config hashes и auth. Изменение порядка Env при recreate не является изменением значений.
- Все три Broker credential identity остались свободными, checkpointed/unrevoked: Claude generation568, Codex172, DeepSeek217. Account login/revoke/rotation не выполнялись.
- Новый macOS run `run-aadbbadcbb508f6473a3574ae700eef3` завершился до bootstrap/workload: `guest_keychain_failed`, затем `cleanup=done`; lease released. Повторная прямая диагностика локализовала `launchctl bootstrap` собственного GUI-agent, exit5. Её private logs сохранены, диагностическая VM released. Проверка исправленного кандидата сейчас продолжается; этот failed run не считается пройденным macOS gate.
- GitHub Actions для Broker main не запустил ни одного шага: account billing/spending-limit rejection. Локальные gates прошли; удалённый CI не объявляется зелёным.
В текущем контуре Go 1.26.9 задан стандартным profile для Linux OpenCode и четырёх macOS workers. Специального Go installer в Runner больше нет. Tooling cache хранит проверенные immutable archives, ограничен 4 GiB; фактические версии сохраняются в `tooling.json`. Временные build products выполняются внутри приватного каталога run; общий Linux `/tmp` остаётся `noexec`.
Доказательства текущего обновления: `state/main-production-sync-20261016/`: `production-deployment.json`, `prepared-deployment.json`, `all-linux-runtime-provenance.json`, `linux-worker-integration.json`, `live-baldda-mcp.json`, `virfield-candidate-upgrade.json`, `macos-readiness-diagnostic/finding.json`.
Отдельный Git cache хранит immutable bundles по repository/commit с лимитом 4 GiB, durable deadline holds и отдельными run-scoped токенами. Disposable checkouts не разделяют mutable worktree и upstream credentials. В production `linux-smoke` подключён к внутренней control-сети Broker; cache/inputs/tooling требуют рабочего маршрута к Broker, одного публичного HTTPS clone недостаточно.
## Границы приёмки
Durable смена окружения использует явно заданный operator checkpoint: остановка Callee и credential fence → snapshot исходников с сохранением base ancestry → cleanup старого worker → `execution_reconfigure` → отдельный owner approval → новая immutable среда и фиксированный continuation. Task и исходный deadline сохраняются; максимум две замены, один admission на checkpoint, отмена охватывает цепочку. Ожидание approval не резервирует worker capacity. Это opt-in политика workflow; в стандартных coding packs checkpoints по умолчанию не включены. Произвольный live graph не сериализуется и не переигрывается. Требуется `execution/v3`.
Предыдущая приёмка закрыта в явном согласованном режиме **«Да, закрыть в проверенном режиме»**. Beads Story `eb-71b7971ac3fdd03b8ff6b198` и все дочерние задачи closed. Производственные Story, отмена, restart, sandbox/write denial, артефакты, controlled provider refusals и protected working-account recovery приняты в своих dated receipts.
Artifact inputs реализованы и развёрнуты через `execution/v2`: до восьми файлов, суммарно до 1 GiB, точные source run/name/SHA256 и исходная сессия. Source run должен быть терминальным с `cleanup=done`; transactional retention holds защищают принятые зависимости. Передача возобновляется до начала исполнения.
Реальный upstream revoke рабочих авторизаций и последующий browser login исключены владельцем и остаются непроверенными. Linux provider-failure checks не доказывают macOS failure lifecycle. Новое post-upgrade macOS preparation failure явно учитывается выше; исторический успех на прежнем binary не заменяет текущую проверку.
## Продолжения и одобрения
Generic webhook в текущем Balda запускает изолированное задание. Канонический канал исходной сессии остаётся Mattermost; Telegram approval не меняет её locator. Продолжение исходной сессии использует `balda.state` и `balda.session.wait`; попытка и наблюдатель сохраняются до Start/retry. Потерянный admission восстанавливается через `execution_lookup`, отмена закрывает и поздний идентичный запрос. Прежние callback routes Broker приостановлены; недоставленные cursors сохранены.
Telegram approval bot получает вопрос только для явно выбранных сессий; иначе вопрос принадлежит исходной беседе. В текущем контуре `telegram_approvals.timeout_seconds=1800`: окно ответа — 30 минут. `min_run_ttl_seconds=3600` требует для новых запусков выбранных сессий общий TTL не меньше часа; более короткий запрос получает `approval_window_too_short` до admission. TTL включает очередь, планирование, ожидание ответа и исполнение; исходный deadline остаётся жёсткой границей и при появлении вопроса не продлевается. Сообщение сначала отправляется без кнопок, message ID сохраняется в state, затем публикуются controls. Рестарт завершает прерванную публикацию или renewal без повторного callback. Устаревшая копия очищается при callback до сохранения update cursor. Ответ владельца передаётся через bound `execution_respond`; модель не подменяет его. `execution_retry` сохраняет точный task, Story, revision, executor и действительное одобрение; новый scope требует нового решения. Для environment checkpoint используется `execution_reconfigure`; обычный retry таких runs запрещён.
Managed lifecycle и native wait restart проверены на развёрнутом Balda. Реальный conversational smoke прошёл: модель использовала исходные Story/Task, подтвердила observer/recovery waits, дождалась фактического Telegram-ответа владельца и получила `succeeded`, `cleanup=done`. Все шесть артефактов скачаны с проверкой SHA256; единственный итоговый ответ подтверждён через Mattermost API в исходной беседе, оставшиеся waits отменены. Приватные доказательства: `state/balda-channel-context-20261015/`. Outage/restart реальной модельной беседы также прошёл: Balda получила HTTP 502, затем Broker/Prism/Balda были перезапущены; сохранились тот же run/Story, provider thread и исходный deadline. После фактического Telegram approval подтверждены `succeeded`, шесть скачанных SHA256-проверенных артефактов, `cleanup=done`, закрытие Story/Task и единственное сообщение о завершении restart-приёмки в исходном Mattermost. Native waits отменены, duplicate admission и остаточных worker container/volume нет. Существующие сессии принимают новый capability snapshot через обычный `/reset`; обновление само их не сбрасывает.
## Проверки
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 — без находок.
- Развёрнутый Balda source `b5f7d5b4`: чистый upstream без локальных патчей. Полный race, lint, architecture, SQLite/PostgreSQL integration, migration validators, govulncheck (0 reachable), replay/NATS/ingress, managed plugin lifecycle и native wait restart прошли. Обновление сохранило авторизации, прежние provider threads, locator/snapshots и все 2277 прежних событий основного инстанса. Общие MCP совпадают; Eagle Asana readonly подтверждён. Backups и proofs: `state/balda-upstream-merged-20261015/`.
- 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: production gate принят 2026-10-16 на installed Virfield `8bfff9f`. Story `eb-3b52387d73c10e8d64ad1ef2`, итоговый run `run-12f093299e237f03a7bb9b70327efcc5` использовал реально сохранённый owner-approved plan. Reviewer фактически выполнил `os.open` и получил EPERM; восемь артефактов повторно скачаны и сверены по size/SHA256, независимый checkout прошёл четыре теста, содержит ровно два новых committed файла и остаётся чистым. Prism Story closed, `succeeded`, `cleanup=done`; все три credential identity unrevoked/unowned, Virfield workers/jobs — 0, девять goldens сохранены. Две более ранние свежие VM Story/restart и три исторические pre-bootstrap ошибки сохранены в прежних receipts. Текущая проверка закрывает macOS readiness и Codex denied-write.
- Реальные 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 не использовались.
Сервисные fixtures не подтверждают выбор tools и доставку результата моделью в настоящей беседе.
## Принятый объём и ограничения
2026-10-16 владелец явно ответил **«Да, закрыть в проверенном режиме»**: закрыта приёмка подтверждённых конфигураций с перечисленными ниже непроверенными ограничениями. Публикация релиза не выполнялась.
| Область | Проверено / границы |
| --- | --- |
| 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 не создан. Natural expiry/refresh Claude принята отдельно; намеренный upstream revoke исключён из согласованной приёмки и не проверен. 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. Контролируемый Codex 401/token_expired проверен на отдельном synthetic vault; реальный upstream revoke и browser login исключены из принятого объёма и не проверены. Проверка запрета записи OpenCode прошла на Linux и свежей macOS VM: обе read-only сессии получили прямые ACP-запросы записи, Callee отклонил их, marker отсутствовал; native plan policy не менялась. Это protocol fault injection, а не попытка tool call, выбранная моделью |
| 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 не выполнялись; аккаунты менять запрещено. По явному решению владельца реальный upstream revoke и последующий browser login исключены из закрываемого объёма и остаются непроверенным ограничением; отрицательные прогоны не считаются их прохождением и не доказывают macOS failure lifecycle |
Источник требований — `docs/work-plan.md`. iPad, прикладные UI/PR workflows и права Obsidian принадлежат вызывающему проекту или Balda.
## Проверка 2026-10-16
Доказательства и копии артефактов сохранены в `state/broker-acceptance-20261016/`. `verification.json` подтверждает macOS production Story, восемь повторно скачанных артефактов, независимые четыре теста, реальный reviewer EPERM и credential settlement. Source fixes перенесены в текущую ветку; функциональные изменения сохранены в `ee2ed5a`, чистый Staticcheck — в `a80a471`.
Linux rollout выполнен после явного разрешения владельца и при нуле активных runs. Реальные container config и image pack сверены: новый image `e9e1ab5e8c0f`, workflow `b09f2be2` у Broker/gateway/worker, health 200. Старые конфиги/образы сохранены. `linux-policy-promotion.json`, `linux-policy-live-config.json` и `linux-policy-sandbox.json` содержат проверку pins, настоящие sandbox write-denial checks и cleanup.
Production Story `run-d643dd9154d4766fe82b72805dabdc9e` завершилась `succeeded/cleanup=done`: implementation, verifier, reviewer, quality, семь SHA256-проверенных артефактов. Независимый checkout повторил четыре unit tests и подтвердил ровно два авторских source files. Повторный fresh-worker run `run-37e61ecfcc08925e14b1531ef84b8b57` пережил restart Broker/gateway/issuer во время implementation: тот же run, исходный deadline и credential owner generation170 сохранились; затем `succeeded/cleanup=done`, ещё семь проверенных артефактов, независимые 4/4 tests и generation172 checkpointed/unowned/unrevoked. Файлы `production-linux-independent-verification.json` и `production-linux-restart-independent-verification.json`.
Отдельная отмена `run-b2625286a00b071284fa48ad00952c7c` во время implementer дала `canceled/cleanup=done`, сохранила пять хешированных артефактов и credential checkpoint; generation167→169, owner cleared, revoked=false. Собственных worker containers/volumes после трёх запусков нет. Prism спроецировал все исходы, закрыл Story `eb-230154345220ae67e434f774`; повторный sync пуст. Все три рабочие credential identity свободны и unrevoked. Итог — `production-cycle-final.json`; секреты в трёх наборах артефактов не найдены.
Итоговые `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, `.4` protected host-loss recovery, `.6.6`, `.6` и корневая Story `eb-71b7971ac3fdd03b8ff6b198` закрыты; все дочерние задачи закрыты. Основание для `.6.6` — явное решение владельца принять проверенный объём, а не утверждение о выполненном отзыве аккаунтов. Финальный rc33 source `ae92c15` собран с согласованной документацией; все четыре exact runtime archives прошли native binary-only checks, `make check`/race/vet и SHA256 проверены. Итог: `state/broker-acceptance-20261016/final-release-readiness.json`, `beads-acceptance-closure.json`, `rc33-release-verification.json`. Публикации нет. Блокеров в согласованном объёме нет; реальный upstream revoke и browser login остаются непроверенными ограничениями. Рабочие сессии не отзывались, тестовые ресурсы очищены. Recovery-копия сохранена вне тестовых leases с проверенным исходным runtime rc33 `d296c73` (до финального документационного commit).
План и решение о границах: [[personal/plans/balda-callee-prism-plan]]. Старые подробные результаты: [[personal/projects/archive/broker-before-main-deployment-2026-10-16]]. Удалённые из Git планы/журналы сохранены и сверены здесь: [[personal/projects/archive/execution-broker-repo-cleanup-2026-10-16/index]]. В product repo остаются контракты и инструкции.
## Конфигурация и восстановление
Приватный Compose: `state/deploy/compose.production.json`; конфиги `broker.json`, `worker.json`, assets в `state/deploy/assets`. Токены находятся только в secret-файлах.
Приватный Compose: `state/deploy/compose.production.json`; `broker.json`, `worker.json`, токены и assets находятся в `state/deploy/`, вне tracked Git. Образы и bootstrap выбираются по конкретным immutable pins, а не по случайному Git HEAD.
После выбора согласованного проверенного комплекта применять из репозитория:
Перед обновлением проверены ноль активных Broker runs/cleanup и свободные identities. Согласованный private snapshot: `state/main-production-sync-20261016/coordinated-stack-snapshot/`; отдельные Balda homes/configs и прежние native issuers — в `active-deployment-before/`. SHA256 и SQLite integrity/foreign-key checks прошли. Не восстанавливать старые OAuth caches поверх более новых без fencing.
```bash
docker-compose -f state/deploy/compose.production.json -p execution-broker up -d --no-build worker broker prism
```
Независимое восстановление трёх рабочих identity без Mac/Keychain принято ранее: зашифрованные original master keys, matching vault и private GPG recipient сохранены на HTPC вне lease workspace (0700/0600), все три read-only provider API ответили HTTP200, временные plaintext key-files удалены. Retained restore runtime — исходный rc33 `d296c73`. Приватные receipts: `state/broker-acceptance-20261016/offhost-working-restore-verification.json`, `offhost-before-final-lease-release.json`.
До смены комплекта завершить runs/cleanup, сохранить state/config/image pins и исходные immutable assets. Сам Git commit deployment не меняет.
Backup перед текущим обновлением: `state/backups/20261015-before-rc32`. Проверены SHA256, 31 SQLite database и inert restore шести компонентов, включая encrypted credential vault. Все три credential identity были освобождены и checkpointed. Restore не запускал сервисы; master keys Keychain в backup отсутствуют. Это подтверждение восстановления production snapshot на том же хосте. Отдельная native-проверка перенесла синтетический encrypted vault с macOS ARM64 на физический Linux AMD64: отсутствие и подмена ключа отклоняются без перезаписи ciphertext, отдельный escrow key восстанавливает запись, revoke работает, fresh enrollment в новый vault с новым ключом проходит. Production credentials и Keychain keys в этом тесте не использовались. Он не заменяет escrow или повторную авторизацию реальных аккаунтов после потери хоста.
Актуальные согласованные state/home/config backups обоих Balda и exact image/binary hashes после обновления на чистый upstream `b5f7d5b4`: `state/balda-upstream-merged-20261015/`, итог — `final-verification.json`. Предыдущие backup и restart/native/off-host fixture receipts: `state/balda-upstream-hooks-20261015/`; более ранние state/home backups: `state/balda-upstream-rollout-20261015/`. Рабочие account/config hashes после обновления совпали с исходными. Приватные отчёты проверок основного комплекта: `state/broker-rc32-rollout-20261015/`. Broker hotfix: `state/telegram-timeout-20261015/`, включая консистентный `broker.before.db` с успешными integrity/foreign-key checks и сохранённый Compose для отката. Hotfix прошёл полный `make check`, Linux ARM64 race для Broker/config/HTTP API и govulncheck без достижимых уязвимостей. Release archives rc32 остаются неизменными и содержат исходный `fee5409`; hotfix развёрнут отдельным Broker image. Native Darwin AMD64 proof: `state/balda-pr62-review-20261015/native-darwin-amd64.json`. Проверочный скрипт поддерживает штатный Python 3.8; публичные rc32 archives не перезаписывались. Приватные отчёты не входят в release archives.
Контракты и процедуры: `docs/protocol.md`, `docs/tooling.md`, `docs/environment-changes.md`, `docs/repository-cache.md`, `docs/operations.md`, `docs/telegram-approvals.md`, `docs/recovery.md`, `docs/testing.md`.
Контракты: `docs/protocol.md`, `docs/support.md`, `docs/operations.md`, `docs/recovery.md`, `docs/executors.md`; work plan теперь в Obsidian.