From 76f542a25da1fc96ffc524a07dd69e6b6839f72a Mon Sep 17 00:00:00 2001 From: Alexey Martemyanov Date: Wed, 14 Oct 2026 17:12:17 +0600 Subject: [PATCH] [2026-10-14] eagle: personal/plans/balda-callee-prism-plan.md personal/projects/balda/execution-broker.md personal/projects/balda/setup.md personal/projects/personal-os/eagle-dashboard.md personal/projects/personal-os/personal-os-architecture.md personal/projects/personal-os/personal-os-failed-approaches.md personal/projects/personal-os/personal-os-status-2026-10.md --- personal/plans/balda-callee-prism-plan.md | 4 +-- personal/projects/balda/execution-broker.md | 29 ++++++++++--------- personal/projects/balda/setup.md | 2 +- .../projects/personal-os/eagle-dashboard.md | 4 +-- .../personal-os/personal-os-architecture.md | 10 ++++--- .../personal-os-failed-approaches.md | 2 +- .../personal-os/personal-os-status-2026-10.md | 2 +- 7 files changed, 29 insertions(+), 24 deletions(-) diff --git a/personal/plans/balda-callee-prism-plan.md b/personal/plans/balda-callee-prism-plan.md index 460327ad..7aaedee5 100755 --- a/personal/plans/balda-callee-prism-plan.md +++ b/personal/plans/balda-callee-prism-plan.md @@ -544,13 +544,13 @@ Balda остаётся оркестратором, Broker изолирует и Реализованы единый Go control plane, SQLite journal, reconciliation, leases/idempotency, resource admission, image pipeline, scoped SSH, cleanup, CLI/MCP и embedded console. Лимит двух VM и неизвестные состояния обрабатываются явно; неопределённая мутация не повторяется автоматически. Personal SSH keys/PAT storage и client-side lifecycle fallback в текущей реализации отсутствуют. -Lume остаётся backend; используется закреплённый 0.5.3 с двумя проверенными исправлениями shutdown. Guest automation встроена и версионируется вместе с Go-кодом. Полный golden/clone E2E пройден на одном Mac; Linux/macOS CI и проверки переносимости/секретов прошли для release commit. Точные результаты и непринятый scope — в [Verification](https://github.com/mallexxx/virfield/blob/main/docs/VERIFICATION.md). +Исторический релиз v2.0.0 использовал Lume 0.5.3; его CI и golden/clone acceptance относятся к release commit 2026-09-30. С 2026-10-08 установленный Virfield использует Tart + SSH nodes. В hardening-кандидате 2026-10-14 Lume backend/factory/wrapper/build/install code удалён; отдельно оставшийся Lume LaunchDaemon ещё зарегистрирован, его VM inventory пуст. Новый кандидат ещё не live принят. Текущие evidence и gates — в [[personal/projects/virfield]] и [Verification](https://github.com/mallexxx/virfield/blob/main/docs/VERIFICATION.md). ### Граница проектов и репозиториев — принятое решение `virfield` и `execution-broker` — два независимых проекта. Их нельзя объединять в один репозиторий или один daemon. -Репозиторий `virfield` содержит host control plane: корневой Go module, `cmd/virfieldd`, `cmd/virfield`, `cmd/virfield-mcp`, `cmd/virfield-lume`, реализации в `internal/`, deployment в `deploy/`. Актуальная карта модулей — [Architecture](https://github.com/mallexxx/virfield/blob/main/docs/ARCHITECTURE.md); отдельного каталога приложения v2 нет. +Репозиторий `virfield` содержит host control plane: корневой Go module, `cmd/virfieldd`, `cmd/virfield`, `cmd/virfield-mcp`, реализации в `internal/`, deployment в `deploy/`. Актуальная карта модулей — [Architecture](https://github.com/mallexxx/virfield/blob/main/docs/ARCHITECTURE.md); отдельного каталога приложения v2 нет. Целевая структура отдельного `execution-broker` (реализацию сверять в его репозитории): diff --git a/personal/projects/balda/execution-broker.md b/personal/projects/balda/execution-broker.md index d9c67310..478ef50a 100644 --- a/personal/projects/balda/execution-broker.md +++ b/personal/projects/balda/execution-broker.md @@ -14,22 +14,25 @@ Проверены реальные Docker/Callee Human pause → restart → resume → 5 артефактов → cleanup, embedded Beads и signed host-plan с rollback. Отдельно Linux ARM64 архив установлен без Go и source checkout: 4 сервисных образа, MCP, перезапуск Broker, 5 артефактов, succeeded и cleanup=done. Чистая установка закреплённых Claude/OpenCode/Node и ACP initialize прошла на macOS/Linux ARM64 без provider inference. Все четыре release-архива выполнили проверки версий, vault import/revoke, MCP, отказа без авторизации и SQLite backup; AMD64 на обеих ОС проверен через эмуляцию, не на native AMD64. Пять архивов rc.26 и SHA256SUMS лежат в `dist/`. -Полный отчёт и логи: `/Users/admin/Developer/execution-broker/state/production-readiness-20261014/local-checks.json`. Задача Balda `balda-7w4` закрыта в локальном Beads-трекере. Обе ветки и коммиты сохранены локально, checkout чистые; автоматическая проверка запретила push исходников и истории без явного разрешения владельца. +Полный отчёт и логи: `/Users/admin/Developer/execution-broker/state/production-readiness-20261014/local-checks.json`. Прежнее закрытие локальной задачи Balda `balda-7w4` отменено после ревью; задача переоткрыта, подробности ниже. Обе ветки и коммиты сохранены локально, checkout чистые; автоматическая проверка запретила push исходников и истории без явного разрешения владельца. -### Что этим прогоном не завершено +### Границы Broker и оставшаяся работа -- Согласованное развёртывание кандидата, worker image pins, bootstrap-пакетов и plugin в действующем контуре; свежая live-приёмка conversational NATS recovery. Сейчас работающий код прежний. -- Native AMD64-приёмка; текущие AMD64 runtime результаты получены через эмуляцию. -- Per-agent OS/tool/MCP/fs/network grants, независимые точные owner capabilities, grants на внешние записи и применение одобренного config diff. -- Typed SSH target/command catalog, bootstrap и reconciliation неопределённого remote outcome. -- Универсальная подготовка стеков Linux/macOS — добавлена в `docs/work-plan.md`, §3.1: декларативные версии/источники/проверки SDK и инструментов, анализ требований репозитория, provisioning до запуска, immutable cache, ограниченный rebuild/resume при недостающей зависимости. Приёмка включает Make/C/CMake, Python, Node и новый Rust/JVM профиль без изменения кода Broker. Установка Go переносится из отдельного Go-specific кода в общий механизм. -- Run-to-run artifact inputs/retention holds и общие immutable macOS tooling/Git caches сверх установленного Go SDK. -- Полный iPad sign/upload/install/unlock/launch с физическим устройством и отказами. -- Configured search/extraction, scoped Obsidian grants, exact-head PR/CI review, idempotent publication и миграция Hermes/scheduled/browser/media/attachment flows. -- Guest-scoped UI/AX/recording, OS boundary, реальная red/green UI-регрессия, exact-head CI, последнее passing video и крупные recording artifacts. -- Прямые ACP autoapproval/context-subagent flows Balda и восстановление после потери хоста/Keychain. +Предыдущий список смешивал Broker с локальными агентскими сценариями. Полный iPad sign/upload/install/unlock/launch, конфигурация search/Obsidian MCP, PR-workflows, миграция Hermes и решения об общем доступе к vault принадлежат Balda/локальному агенту или конкретному проекту. Включение их в условия готовности релиза Broker было ошибкой. Никакая новая политика прав Obsidian этим прогоном не реализована и не применялась. UI red/green и запись для конкретного приложения — его workflow; Broker отвечает за используемые им общие механизмы worker/guest execution и артефактов. -Исходные требования: `docs/work-plan.md`, `docs/ipad-deployment-plan.md`, `docs/hermes-workflow-gap-analysis.md`, [[work/wiki/apple-browsers/vm-ui-testing]]. Локальный кандидат принят в проверенном объёме; полная дорожная карта и обновление production не объявляются завершёнными. +В актуальном `docs/work-plan.md` остаются собственные задачи Broker: согласованное развёртывание принятых бинарников/образов/bootstrap/plugin, универсальная подготовка стеков Linux/macOS, immutable tooling/Git caches, run-to-run artifact inputs и retention holds. Настраиваемый remote-action API — отдельное будущее расширение; обычный локальный агент может работать по SSH без него. Native AMD64 и off-host/Keychain disaster recovery остаются отдельными неподтверждёнными границами заявляемой поддержки. Физический iPad не является release gate Broker. + +### Пересмотр патчей Balda после ревью — 2026-10-14 + +Старая `codex/production-readiness` / `223b85ad` не готова к upstream PR. Подтверждены четыре дефекта: transient error после durable admission; отсутствие GC receipts/expired records; несовместимые новые NATS caps по умолчанию; outbox policy/wiring в неверных владельцах. Прошедшие ранее тесты эти случаи не покрывали и не подтверждали готовность PR. + +Исправления подготовлены отдельно в `/private/tmp/execution-broker-balda-upstream`, ветка `codex/ingress-outbox-v2`, коммит `8615d512be017aab7d11921e33f31ede89416852` прямо поверх свежего upstream `875d78eefd846ea2d54db37260409f412ed9c42f`. Старый merge и дублирующие upstream обновления Go/x/net не перенесены; go.mod/go.sum относительно upstream не менялись. + +Теперь локальная запись означает accepted независимо от NATS; pending duplicate возвращает тот же admission receipt, а publisher повторяет исходный envelope. Terminal receipts/expired tombstones удаляются после семи дней, payload в terminal не сохраняется; pending GC не удаляет. NATS budgets включаются только `balda.nats.bounded_streams: true`, по умолчанию прежние caps сохранены. Outbox принадлежит `jobs/commandoutbox`; отдельный `commandoutboxfx` связывает локальные порты chat/command ingress с AppKV и bus. Обновлены `.go-arch-lint.yml`, configuration/operations и архитектурная документация. + +Целевые race-регрессии, lint, architecture и build прошли. Полный тестовый прогон со штатным macOS TMPDIR выявил `TestBackofficePluginsRuntimeContracts`: тот же сбой воспроизведён на чистом upstream, а с `TMPDIR=/private/tmp` этот тест проходит. Полный повтор с каноническим TMPDIR запущен; его итог записывается отдельно, пока не объявлен зелёным. Рабочий Balda не обновлялся, ветка не опубликована. + +Beads `balda-7w4` переоткрыта после ревью. Это локальная временная база, не доказательство общей готовности PR. CLI существует по абсолютному пути `/private/tmp/execution-broker-native-tools/bd`; обычная команда `bd` не установлена в PATH. Существующая проектная база не содержит issue_prefix; её переинициализация/переименование не выполнялись. ### История приёмки действующих версий diff --git a/personal/projects/balda/setup.md b/personal/projects/balda/setup.md index afd99f75..bee47f8a 100755 --- a/personal/projects/balda/setup.md +++ b/personal/projects/balda/setup.md @@ -2,7 +2,7 @@ Execution Broker, Telegram-одобрения и текущая приёмка: [[personal/projects/balda/execution-broker|Execution Broker — текущий локальный контур]]. -Локальный кандидат 2026-10-14: Broker `0.1.0-rc.26` / `b64a1ba`, Balda `223b85ad`, ветки `codex/production-readiness`. Локальные race/lint/security/integration/release проверки прошли; изменения не развёрнуты, работающий контейнер `balda-mm-mac` остаётся на прежнем образе. Выбор ветки или коммит не меняет действующий сервис. Подробные доказательства и оставшиеся планы — в карточке выше. +Broker-кандидат 2026-10-14: `0.1.0-rc.26` / `b64a1ba`, локальные проверки сохранены отдельно. Старая Balda `223b85ad` / `codex/production-readiness` отклонена после ревью четырёх дефектов; её зелёные тесты не подтверждали готовность upstream PR. Исправленная ветка `codex/ingress-outbox-v2` / `8615d512` подготовлена на свежем upstream в `/private/tmp/execution-broker-balda-upstream`; актуальные проверки и ограничения — в карточке выше. Изменения не развёрнуты, контейнер `balda-mm-mac` остаётся на прежнем образе. Выбор ветки или коммит не меняет действующий сервис. _Проверено: 2026-10-09._ diff --git a/personal/projects/personal-os/eagle-dashboard.md b/personal/projects/personal-os/eagle-dashboard.md index c06b6c2d..502880fe 100755 --- a/personal/projects/personal-os/eagle-dashboard.md +++ b/personal/projects/personal-os/eagle-dashboard.md @@ -108,7 +108,7 @@ PID-file-based — survives Dashboard restarts without crashing. | claude_proxy_node | Claude Proxy (node) | localhost | daemon | | claude_proxy_python | Claude Proxy (python) | localhost | daemon | | asana_mcp | Asana MCP | localhost | daemon | -| virfield | [[personal/projects/virfield\|Virfield v2]] | `127.0.0.1:7780` by default | separate system LaunchDaemons; dashboard integration not verified | +| virfield | [[personal/projects/virfield\|Virfield (Tart + SSH nodes)]] | `127.0.0.1:7780` by default | system Virfield LaunchDaemon; dashboard integration not verified | ### ML @@ -328,7 +328,7 @@ When a launchd cron is created and `launchctl print gui//