[2026-10-15] eagle: personal/projects/balda/execution-broker.md personal/projects/balda/setup.md personal/projects/virfield.md

This commit is contained in:
Alexey Martemyanov committed 2026-10-15 10:50:27 +06:00
1 parent 5f5749e31b
commit 9e81b05080
3 files changed
+37 -22

No files matched your search

+21 -19
View File
@@ -6,16 +6,16 @@
| Компонент | Текущее состояние |
| --- | --- |
| Репозиторий | `/Users/admin/Developer/execution-broker`, `codex/production-readiness`; код работающего комплекта — `dcb6eba` |
| Broker | `execution-broker:dcb6eba`, версия `0.1.0-rc.30` |
| Gateway | `execution-broker-gateway:dcb6eba`, версия `0.1.0-rc.30` |
| Prism | `execution-prism-adapter:dcb6eba`, версия `0.1.0-rc.30` |
| Smoke worker | `execution-broker-worker:dcb6eba`; один SHA256 image pin в Broker и gateway |
| OpenCode worker | `execution-broker-executors:dcb6eba`; один SHA256 image pin в Broker и gateway, Go SDK 1.26.9 |
| macOS bootstrap | Четыре пакета `*-dcb6eba.tar.gz` с Runner/Callee этого комплекта |
| Репозиторий | `/Users/admin/Developer/execution-broker`, `codex/production-readiness`; код работающего комплекта — `fee5409` |
| Broker | `execution-broker:fee5409`, версия `0.1.0-rc.32` |
| Gateway | `execution-broker-gateway:fee5409`, версия `0.1.0-rc.32` |
| 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:fee5409`; один SHA256 image pin в Broker и gateway, Go SDK 1.26.9 |
| macOS bootstrap | Четыре пакета `*-fee5409.tar.gz` с Runner/Callee этого комплекта |
| Оба Balda | Upstream `ee312646`, image `balda-balda:upstream-ee312646-b1`; подробности в [[personal/projects/balda/setup]] |
| Managed plugin | rc30 у обоих, Enabled=true, Drifted=false; прежние plugin data, revisions и marketplace сохранены |
| Release archives | `0.1.0-rc.30`, source `dcb6eba`; четыре платформенных архива и plugin в `dist/`, SHA256 проверены |
| Managed plugin | rc32 у обоих, Enabled=true, Drifted=false; прежние plugin data, revisions и marketplace сохранены |
| Release archives | `0.1.0-rc.32`, source `fee5409`; четыре платформенных архива и plugin в `dist/`, SHA256 проверены |
Docker socket и daemon group отсутствуют у coding workers. Административный доступ к Docker остаётся у gateway. Основные модели, авторизации и история обоих Balda сохранены; сессии не сбрасывались.
@@ -25,13 +25,17 @@ Docker socket и daemon group отсутствуют у coding workers. Адми
В текущем контуре 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 запускает изолированное задание. Продолжение исходной сессии использует `balda.state` и `balda.session.wait`; попытка и наблюдатель сохраняются до Start/retry. Потерянный admission восстанавливается через `execution_lookup`, отмена закрывает и поздний идентичный запрос. Прежние callback routes Broker приостановлены; недоставленные cursors сохранены.
Telegram approval bot получает вопрос только для явно выбранных сессий; иначе вопрос принадлежит исходной беседе. Ответ владельца передаётся через bound `execution_respond`; модель не подменяет его. `execution_retry` сохраняет точный task, Story, revision, executor и действительное одобрение; новый scope требует нового решения.
Telegram approval bot получает вопрос только для явно выбранных сессий; иначе вопрос принадлежит исходной беседе. Ответ владельца передаётся через bound `execution_respond`; модель не подменяет его. `execution_retry` сохраняет точный task, Story, revision, executor и действительное одобрение; новый scope требует нового решения. Для environment checkpoint используется `execution_reconfigure`; обычный retry таких runs запрещён.
Managed lifecycle и native wait restart проверены на актуальном upstream. Реальный conversational run с моделью и доставкой в исходную беседу остаётся отдельным незавершённым gate. Существующие сессии принимают новый capability snapshot через обычный `/reset`; обновление само их не сбрасывает.
@@ -39,11 +43,11 @@ Managed lifecycle и native wait restart проверены на актуаль
- Полные race/vet Broker на macOS ARM64 и Linux ARM64; Callee adapter, source/binary govulncheck — 0 reachable vulnerabilities, secret scan — без находок.
- Свежий Balda upstream: полный race, lint и architecture gate; managed plugin lifecycle и native wait restart.
- Production service acceptance: настоящий Callee Human → restart Broker/Prism → resume → пять артефактов с проверенными SHA256 → `succeeded`, `cleanup=done`; Task и Story закрыты.
- Настоящая macOS VM: verified Go archive через scoped tunnel, `tooling.json`, один XCTest без ошибок и сохранённый xcresult; семь артефактов с проверенными SHA256, VM cleanup подтверждён.
- Реальные Make/C, Python, Node и JVM проекты на macOS и Linux; Docker builder/Runner/Callee cache hit и изменение Node SDK; отдельная проверка реального `go run` при `/tmp noexec`.
- Production service acceptance: настоящий Callee Human → restart Broker/Prism → resume → шесть артефактов с проверенными SHA256 и provenance Git cache → `succeeded`, `cleanup=done`; Task и Story закрыты.
- Настоящая macOS VM: verified Go archive через scoped tunnel, `tooling.json`, один XCTest без ошибок и сохранённый xcresult; восемь артефактов с проверенными SHA256, включая `repository.json`, VM cleanup подтверждён.
- Реальные 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: Darwin ARM64 и Linux ARM64 — native, Darwin AMD64 — emulated. Linux AMD64 прошёл полный emulated gate через отдельный QEMU и 30/30 startup-проверок. Штатная Linux AMD64 эмуляция нестабильна: два сбоя на 20 запусков. Native AMD64 не проверен.
- Runtime archives: Darwin ARM64 и Linux ARM64 — native, Darwin AMD64 — emulated. Linux AMD64 прошёл полный emulated gate через отдельный QEMU. Штатная Linux AMD64 эмуляция на этом хосте ранее проявляла нестабильность и не считается принятой. Native AMD64 не проверен.
Сервисные fixtures не подтверждают выбор tools и доставку результата моделью в настоящей беседе.
@@ -52,8 +56,6 @@ Managed lifecycle и native wait restart проверены на актуаль
| Область | Что остаётся |
| --- | --- |
| Balda boundary | Реальный conversational run и outage/restart с видимым результатом в исходной беседе |
| Runtime tooling | Ограниченное durable изменение окружения посреди исполнения с безопасным checkpoint/resume |
| Git cache | Отдельный общий immutable object cache по repository/commit; существующие managed mirrors его не заменяют |
| Платформы | Native AMD64 acceptance; штатная Linux AMD64 эмуляция остаётся непринятой, отдельный QEMU не заменяет native gate |
| Recovery | Потеря хоста/Keychain не проверена; подтверждён только drained backup/restore на том же хосте |
@@ -71,8 +73,8 @@ docker-compose -f state/deploy/compose.production.json -p execution-broker up -d
До смены комплекта завершить runs/cleanup, сохранить state/config/image pins и исходные immutable assets. Сам Git commit deployment не меняет.
Backup перед текущим обновлением: `state/backups/20261015-before-rc30`. Проверены SHA256, 31 SQLite database и inert restore шести компонентов, включая encrypted credential vault. Все три credential identity были освобождены и checkpointed. Restore не запускал сервисы; master keys Keychain в backup отсутствуют. Это подтверждение восстановления на том же хосте.
Backup перед текущим обновлением: `state/backups/20261015-before-rc32`. Проверены SHA256, 31 SQLite database и inert restore шести компонентов, включая encrypted credential vault. Все три credential identity были освобождены и checkpointed. Restore не запускал сервисы; master keys Keychain в backup отсутствуют. Это подтверждение восстановления на том же хосте.
Отдельные state/home backups обоих Balda: `state/balda-upstream-rollout-20261015/`. Рабочие account/config hashes после обновления совпали с исходными. Приватные отчёты проверок Broker: `state/broker-rc30-rollout-20261015/`; они не входят в release archives.
Отдельные state/home backups обоих Balda: `state/balda-upstream-rollout-20261015/`. Рабочие account/config hashes после обновления совпали с исходными. Приватные отчёты проверок Broker: `state/broker-rc32-rollout-20261015/`; они не входят в release archives.
Контракты и процедуры: `docs/protocol.md`, `docs/tooling.md`, `docs/operations.md`, `docs/telegram-approvals.md`, `docs/recovery.md`, `docs/testing.md`.
Контракты и процедуры: `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`.
+2 -2
View File
@@ -25,7 +25,7 @@ Config bind-mounted в `/workspace/.config/balda` read-only для контей
Eagle работает на том же Mac в `balda-mm-eagle`; Compose, config, state и work находятся в `/Users/admin/Docker/balda-mm-eagle/`, service — `eagle`, отдельный home volume — `balda_eagle-home`. Образы обоих инстансов одинаковы. Авторизации Codex раздельные; при обновлении они сохранены.
У обоих включены одинаковые Obsidian, Execution Broker и Prism MCP, одинаковые права runtime и managed plugin `execution-broker` rc.30. Проверены реальные initialize/tools-list: Obsidian — 15, Broker — 24, Prism — 5 инструментов; списки совпадают. Eagle дополнительно имеет `asana-readonly`, URL `http://asana-readonly:3100/mcp` в приватной Docker-сети. Отдельный контейнер `balda-eagle-asana-readonly` не публикует порт на хост. Реальное чтение Asana прошло; все пять операций изменения и запись заметок в файл отклоняются сервером.
У обоих включены одинаковые Obsidian, Execution Broker и Prism MCP, одинаковые права runtime и managed plugin `execution-broker` rc.32. Проверены реальные initialize/tools-list: Obsidian — 15, Broker — 26, Prism — 5 инструментов; списки совпадают. Eagle дополнительно имеет `asana-readonly`, URL `http://asana-readonly:3100/mcp` в приватной Docker-сети. Отдельный контейнер `balda-eagle-asana-readonly` не публикует порт на хост. Реальное чтение Asana прошло; все пять операций изменения и запись заметок в файл отклоняются сервером.
В обоих конфигурациях provider `codex_acp`, reasoning `medium`, явный model отсутствует. Последние записи Codex подтверждают `gpt-6.1-sol` у обоих. При выравнивании инструментов настройки основной модели не менялись. `balda.nats.max_store` у обоих — `16gb`.
@@ -33,7 +33,7 @@ Eagle работает на том же Mac в `balda-mm-eagle`; Compose, config
В этой версии generic webhooks выполняют изолированные задания. Они не продолжают исходную сессию. Старые `routes.*.path`, `envelope.target`, `key_from_body`, `mode` и `fallback_to` удалены из конфигурации; listener задаётся через `balda.http`. Сейчас он слушает loopback `127.0.0.1:8095`.
Плагин rc30 использует `balda.state` и штатный `balda.session.wait`: наблюдатель вооружается до Start/retry и возвращается в исходную сессию. Managed lifecycle и restart-контракт проверены; conversational acceptance с реальной моделью ещё открыт. Старые callbacks Broker на `:8090` приостановлены, недоставленные cursors сохранены. Native wait acceptance не является подтверждением доставки сообщения провайдером.
Плагин rc32 использует `balda.state` и штатный `balda.session.wait`: наблюдатель вооружается до Start/retry и возвращается в исходную сессию. Managed lifecycle и restart-контракт проверены; conversational acceptance с реальной моделью ещё открыт. Старые callbacks Broker на `:8090` приостановлены, недоставленные cursors сохранены. Native wait acceptance не является подтверждением доставки сообщения провайдером.
Оба инстанса имеют также одинаковые пять глобальных Codex skills и одинаковую Codex tool policy; различий не найдено. Обновление плагина выполнено штатной переустановкой из нового operator source с сохранением `plugin-data/execution-broker`, старых revisions/catalog snapshots и содержимого прежнего marketplace. Существующие сессии не сбрасывались.
+14 -1
View File
@@ -12,7 +12,7 @@ tags:
---
# Virfield — текущее состояние
Актуально на 2026-10-15 04:01 UTC. Checkout `/Users/admin/Developer/virfield`, ветка `codex/retire-lume-release-hardening`; current source/installed `ab9a2ad92ed2b97ca7714e800a6fa1261edaee5f`, source pushed, `main` не обновлён. Все прежние чужие leases released, семь goldens сохранены. Installed `4a53b67` прошёл восемь свежих Tart clones (по два iPad Monterey, Samsung Monterey, Ventura, macOS27): native GUI/SSH keychain I/O, actual1920×1080, реальные reboot/new bootUUID, isolation/workload/artifacts/desktop/release/tunnel revocation. Исправлены host Retina scale, native browser split-state trust и воспроизведённая HTPC inventory race. Full local make check (10 Python tests + Go race), Staticcheck, Gitleaks209commits, govulncheck0reachable/imported, clean package/install и exact-version HTTP/fresh stdio MCP PASS. На HTPC clone/start/reservations прошли, но concurrent cold boot на HDD не уложился в10мин. Выявлена внешняя нагрузка Steam: staging33.6GB на том же HDD, ~20MB/s read/write и высокие I/O stalls. Текущий кандидат с flush-preserving QEMU page cache проверяется; cache speedup и native node acceptance пока не доказаны. Factory/private GHCR и live restore/rollback ещё не приняты. Старый owning MCP точно идентифицирован и остановлен; client auto-reconnect отсутствует, требуется ручной reconnect. GUI browser launch заблокирован locked Mac. Пользователю отправлены async requests на unlock/reconnect и отдельно на owner-only HTPC golden permissions; ответов нет, chmod не делался. Кандидат пока не release accepted. GitHub CI отложен, проверки только локально. Старые датированные checkpoints ниже сохраняют provenance и не являются текущими указаниями. Worktree `virfield-v3`/ветка `codex/virfield-v3-stage1` не являются maintained checkout.
Актуально на 2026-10-15 04:43 UTC. Checkout `/Users/admin/Developer/virfield`, ветка `codex/retire-lume-release-hardening`; source/installed `2f23ae609a4f650130f5c84835f89931d6e70592`, branch pushed, `main` не обновлён. Все прежние чужие leases released, семь исходных goldens сохранены. Tart native matrix8/8 и controller-state live restore с ещё2Monterey native/reboot cycles PASS. Исправлены Retina scale (1920x1080px), native browser split-state trust, reproduced HTPC inventory race, factory Data-volume capacity check и bounded20min node preparation budget (caller TTL и строгая readiness неизменны). Exact full local CI10Python+Go race, Staticcheck, clean package/install и HTTP/fresh stdio exact-version/all-four-runbooks/resources PASS. Factory-r2 уже built/qualified,2worker clones/workloads/release PASS; fresh portable public-base rebuild/sanitization прошли, GHCR upload в разрешённый private namespace выполняется (~20%), digest/visibility/pull-back ещё не приняты. HTPC native readiness пока не прошла под внешней Steam I/O нагрузкой на том же HDD; нужен повтор новым20min budget после разгрузки. Owning MCP требует ручной reconnect; GUI browser launch ждёт unlock Mac, existing HTPC golden permissions — отдельного согласия. Async questions без ответа, chmod не делался. Controller binary rollback ещё не выполнен. Кандидат пока не release accepted. CI только локально, GitHub CI отложен. Датированные checkpoints ниже сохраняют provenance. Worktree `virfield-v3`/ветка `codex/virfield-v3-stage1` не являются maintained checkout.
## Runtime и deployment
@@ -224,3 +224,16 @@ Lume повторно подтверждён disabled/unloaded, port7777closed.
Активная новая matrix `/private/tmp/virfield-installed-htpc-native-ab9a2ad-20261015`: собственные lease-81111c749a09dafe75ab4886809f5b0b и lease-783b910082aef60af102b947f3034e4e. Внешний Steam PID12980 создаёт около42MB read и42MB write за2сек, имеет62FD на том же VM HDD; content log подтверждает AppID766570 staging33,619,622,671bytes с09:39local. Это реальная общая I/O нагрузка; Steam не менялся. Новые QEMU env writeback/threads и NOCOW storage/data подтверждены, но улучшение boot и native node acceptance пока не доказаны. Evidence `external-io-blocker.json` в private matrix root. Нужен повтор после разгрузки HDD; не ослаблять keychain/readiness.
Owning MCP PID65967 установлен через единственный новый API socket от текущего законченного read-only status request. Только этот старый adapter остановлен; остальные не менялись. Auto-reconnect не сработал (Transport closed), вручную переподключить Virfield MCP должен текущий client. Async request на unlock Mac + reconnect и отдельный permission question на0400/0700 остаются без ответа.
## Controller-state live restore PASS — 2026-10-15 04:11 UTC
Installed ab9a2ad, backup24b8cc75c691697893d48d44c6163bfb. Private copied SQLite/images/node management identity + new owner token запущены через existing launchd service на том же listener после атомарной смены config и SIGTERM; sudo bootout до этого не прошёл и ничего не изменил. Один manager/listener. Старый owner token отклонён401, exact HTTP/fresh stdio MCP PASS,7image identities/manifest сохранены. Два own Monterey clones a523fc64…/cd09f148… прошли native Aqua/SSH I/O, реальный reboot, display/workload/artifact/desktop/release/revocation. Read-only SQLite comparison доказал, что их records только в restored copy, original journal не менялся. Byte-exact original config/state возвращены, оба VM удалены. Evidence `/private/tmp/virfield-live-restore-drill-20261015/report.json` passed и `state-isolation-evidence.json`. Runtime disks не копировались; это controller-state restore, не VM-disk disaster recovery.
## Factory capacity fix / GHCR roundtrip in progress — 2026-10-15 04:43 UTC
Первый own factory image-b3dba0ef… failed до публикации: diskutilresize120GB successful, immediate rootdf14GB, grow script exit66. Packer/process/native VM absent подтверждены; private logs сохранены в `/private/tmp/virfield-release-roundtrip-20261014/failed-factory-attempt1`, exact-name journaled recovery delete job-eafb8752… succeeded. Новый логический attempt2 имеет отдельный durable key; исходные replay records сохранены, tag ещё не использовался.
Source/installed2f23ae609a4f650130f5c84835f89931d6e70592: capacity проверяется на writable Data, до30сек после одного resize, реальная нехватка/invalidstats fail closed. Regression fixtures stale-root/delayed/full/invalid PASS, full localCI/Staticcheck PASS, branch pushed. Node prepare20min основан на историческом9min HDD cold boot до новых keychain checks; caller lease TTL и primary10min unchanged. Archive `virfield-v0.0.0-capacity-readiness-darwin-arm64.tar.gz`, SHA2569defb127d54a06c722d403e02ce90b2b427b2597613d51145d6eba2b81de60a1, installedPID88439, private backup/signing/FDA/7goldens preserved. Exact installed MCP version0.0.0-capacity-readiness/all4runbooks/resources PASS.
Factory-r2 image-9b543d55… /job-007f3937… built/qualified/stopped: writable Data87,827,148KiB free (check0), subsequent rootdf тоже обновлён. Это подтверждает исправленный capacity gate; уникальный механизм initial stale root df отдельно не доказан. Два worker clones43b88366…/a9fb0d78… прошли SSH/key isolation, exact OS/build/SIP, workload/artifact/desktop/release. Portable publication image-92b7abe44ddaa89b910af025cce0e863 /job-3e83652b… построена заново из pinned public base, qualified и sanitized, private managed golden не клонировался для upload. Push в `mallexxx/virfield-hardening-acceptance:release-check-0644cb90dac8` выполняется (~20%); manifest/digest/private visibility/pull-back/workload/cleanup ещё не приняты. Durable journal `/private/tmp/virfield-release-roundtrip-20261014/journal.json`, planned pull `release-check-pull-0644cb90dac8`. При неизвестном исходе не менять replay keys и не повторять push вслепую.