diff --git a/personal/projects/balda/balda.md b/personal/projects/balda/balda.md index 08946500..7a1bb477 100755 --- a/personal/projects/balda/balda.md +++ b/personal/projects/balda/balda.md @@ -9,24 +9,11 @@ - [[personal/projects/balda/soul|Снимок global instruction]] - [[personal/projects/balda/workspace-context|Provider context]] -Эти карточки различают проверенный код, результаты CI и реально развёрнутый образ. Готовность Broker не следует из открытия PR Balda. +В карточках указаны работающий образ, действующая конфигурация и границы готовности Broker. -## Репозитории и PR +## Репозитории -| Репозиторий / изменение | Подтверждённый статус | -| --- | --- | -| [baldaworks/balda](https://github.com/baldaworks/balda) | Upstream бота; fork — [mallexxx/balda](https://github.com/mallexxx/balda) | -| [PR #8 — Mattermost](https://github.com/baldaworks/balda/pull/8) | **MERGED**, 2026-09-29 | -| [PR #12 — webhook routing](https://github.com/baldaworks/balda/pull/12) | **MERGED**, 2026-10-03 | -| [PR #52 — durable ingress/question recovery](https://github.com/baldaworks/balda/pull/52) | **OPEN**, HEAD `085a0d43`; **11/11 CI SUCCESS**, **CHANGES_REQUESTED / merge BLOCKED**, ещё не merged | - -Checkout кандидата PR #52: `/private/tmp/execution-broker-balda-upstream`, ветка `codex/ingress-outbox-v2`. Локальные проверки и self-review завершены. CI включает восемь required jobs и три native-launch jobs (Ubuntu/macOS/Windows). Зелёный CI не означает, что кандидат установлен: production image остаётся `balda-balda`, его точный ID указан в runbook. - -PR #52 добавляет durable admission и автономное восстановление SQL-сохранённого ответа без повторного Telegram update, затем независимую очистку controls. Включены retention, opt-in NATS budgets и regression tests. Операционные ограничения и миграции SQLite 63 / PostgreSQL 28 описаны в карточке Broker. - -## Открытое ревью PR #52 - -[Review metalagman](https://github.com/baldaworks/balda/pull/52#pullrequestreview-5519740284) нашёл блокирующее нарушение FIFO одной сессии между slash-command/chat/question actor targets. Ошибка подтверждена отдельным race probe на неизменённом HEAD: второй запрос публикуется, пока первый заблокирован. Существующие CI checks этого сценария не покрывали. Нужны исправление session scope и regression; reviewer также запросил доступную ссылку на acceptance в shared Beads. История локальной `balda-7w4` не заменяет такую запись. +Upstream: [baldaworks/balda](https://github.com/baldaworks/balda). Fork: [mallexxx/balda](https://github.com/mallexxx/balda). ## Конфигурация и владение @@ -34,7 +21,7 @@ PR #52 добавляет durable admission и автономное восста Balda и локальные агенты владеют оркестрацией, MCP, search/Obsidian и прикладными workflows. Execution Broker владеет disposable worker, lifecycle, credentials, инструментами и артефактами; его незавершённые задачи перечислены отдельно. -Документация кода: [README](https://github.com/baldaworks/balda/blob/main/README.md), [configuration](https://github.com/baldaworks/balda/blob/main/docs/reference/configuration.md), [plugins](https://github.com/baldaworks/balda/blob/main/docs/reference/plugins.md). Для поведения ещё не merged PR смотреть его точный HEAD. +Документация кода: [README](https://github.com/baldaworks/balda/blob/main/README.md), [configuration](https://github.com/baldaworks/balda/blob/main/docs/reference/configuration.md), [plugins](https://github.com/baldaworks/balda/blob/main/docs/reference/plugins.md). ## История diff --git a/personal/projects/balda/execution-broker.md b/personal/projects/balda/execution-broker.md index 62b0856b..15357c1c 100644 --- a/personal/projects/balda/execution-broker.md +++ b/personal/projects/balda/execution-broker.md @@ -1,16 +1,10 @@ # Execution Broker — текущий локальный контур -Проверено: **2026-10-14**, включая GitHub, репозитории, конфигурацию и работающие контейнеры. +Проверено: **2026-10-14** по репозиториям, конфигурации и работающим контейнерам. ## Текущий статус -**Broker ещё не полностью реализован и не прошёл production-приёмку нового кандидата.** Локальные проверки rc.26 завершены; работающий контур использует прежние образы. Открытый [PR #52](https://github.com/baldaworks/balda/pull/52) относится к **Balda**: все **11/11 GitHub checks SUCCESS**, PR открыт и не draft; конфликтов нет, но **CHANGES_REQUESTED / merge BLOCKED**, ещё не merged. - -## Открытый блокер Balda PR #52 - -[Внешнее ревью metalagman](https://github.com/baldaworks/balda/pull/52#pullrequestreview-5519740284), 2026-10-14 14:41:30 UTC, запросило изменения. **FIFO в рамках одной сессии нарушается между разными actor targets:** после ошибки публикации `command:session-1` outbox всё равно публикует следующий `session:session-1`, потому что блокирует по `Envelope.To`, а не общему session scope. Поведение независимо воспроизведено на HEAD `085a0d43`: одноразовый race overlay probe получил `[first second]` вместо `[first]`. Исходники и ветка этим probe не менялись. - -Нужно исправление session-scoped FIFO с fallback для команд без session и regression для смешанных targets. Reviewer также запросил ссылку на Story/plan/acceptance в shared Beads; локальная `balda-7w4` такой ссылкой не является. Оба пункта остаются открытыми. Зелёные существующие 11 CI checks не покрывали новый FIFO repro; кандидат Balda сейчас не принят к merge. +**Broker ещё не полностью реализован и не прошёл production-приёмку нового кандидата.** Локальные проверки rc.26 завершены; работающий контур использует прежние образы. ## Репозитории и действующие образы @@ -22,9 +16,8 @@ | Gateway production | `execution-broker-gateway:quality-437cbf8` | | Prism production | `execution-prism-adapter:session-fix-20261004` | | Balda production | контейнер `balda-mm-mac`, образ `balda-balda`, image ID `sha256:56c00100258b1a478484ef20e044981ed0a569ec0ae7d6ba8608e8878a9e1f95` | -| Balda PR candidate | `codex/ingress-outbox-v2`, HEAD `085a0d435f727a1f4628a3259998c6498d42fcf2`, checkout `/private/tmp/execution-broker-balda-upstream` | -Ветка Broker остаётся локальной. Ветка Balda опубликована в `mallexxx/balda`. Открытие PR не обновляло контейнеры. +Кандидат Broker остаётся локальным; работающие контейнеры не обновлены. ## Что проверено у Broker rc.26 @@ -49,29 +42,12 @@ Источник объёма работ — `/Users/admin/Developer/execution-broker/docs/work-plan.md`. Настраиваемый remote-action API — отдельное будущее расширение. iPad, прикладные UI/PR workflows, search/Obsidian и общая политика прав локального агента принадлежат Balda или конкретному проекту. Новая политика доступа к Obsidian этим прогоном не вводилась. -## Balda: PR #52 и восстановление ingress - -[PR #52](https://github.com/baldaworks/balda/pull/52) открыт из `085a0d43` в `baldaworks/balda:main`. Все восемь required checks прошли: lint, test, SQLite/PostgreSQL integrations, architecture lint, projection replay, JetStream, ingress E2E. Дополнительно прошли native-launch jobs **Ubuntu, macOS и Windows** — всего 11/11 SUCCESS. Это проверки Balda; native AMD64 acceptance Broker остаётся отдельной границей. - -Локально основной агент отревьюил весь diff из 58 файлов. Прошли полный `go test -race ./...` в штатном macOS TMPDIR, обе tagged SQL integration suites, lint, architecture, govulncheck, Goose validations, projection replay 15 раз, ingress/native MCP scenarios и build. Хэши проверенных файлов совпадают с HEAD PR. Одноразовый PostgreSQL удалён. GitHub CI завершился после локальных проверок; полный `test` job завершился 2026-10-14 14:13:40 UTC. - -Durable admission сохраняет команду до receipt, background publication переживает NATS outage. Terminal receipts/tombstones собираются через семь дней, новые NATS budgets включаются только явно. Retry policy принадлежит `jobs/commandoutbox`, автономное восстановление ответов — `jobs/questionoutbox`; concrete wiring находится в `commandoutboxfx`. - -Ответ и два recovery-маркера сохраняются одной SQL-операцией. Worker восстанавливает continuation без нового inbound, после receipt отдельно сохраняет cleanup controls. Ошибка cleanup не переотправляет continuation, положительный Telegram Selected следует durable admission. Late delivery binding и повтор завершённой очистки проверены. Regression использует реальный pinned webhook/runtime, production control publisher, один HTTP update и десять failure/restart случаев для callback/text; второго bot/callback после reopen нет. - -SQLite migration **63** / PostgreSQL migration **28** требуют согласованного backup. Исторические answered-записи не переигрываются автоматически. Гарантия начинается с SQL settlement; webhook HTTP 200 означает transport intake. Сохраняются границы: один publisher на state DB, outbox pending lifetime до 24 часов, terminal dedupe семь дней. PR ещё не merged и заблокирован review; его исправления не объявляются развёрнутыми. - -Прежняя Balda `codex/production-readiness` / `223b85ad` — отклонённый прототип, оставленный для истории. Источником текущей реализации является PR #52. PR [#8](https://github.com/baldaworks/balda/pull/8) merged 2026-09-29, PR [#12](https://github.com/baldaworks/balda/pull/12) merged 2026-10-03. - -## Навигация и доказательства +## Навигация - [[personal/projects/balda/setup|Balda: действующая конфигурация и перезапуск]] -- [[personal/projects/balda/balda|Balda: обзор и актуальные PR]] -- `state/production-readiness-20261014/review-followup.json` — текущий Balda diff, self-review, проверки, PR/CI и история пересмотренных выводов. -- `state/production-readiness-20261014/local-checks.json` — исторический прогон Broker rc.26. Его результаты по старому Balda prototype не заменяют текущий review-followup. -- `state/production-readiness-20261014/balda-v5-reviewed-files.json` — хэши 58 проверенных файлов; полные логи лежат рядом. `balda-review-fifo-probe.log` фиксирует новый независимо воспроизведённый блокер. -- Beads `balda-7w4` была закрыта после прежнего локального прогона в явно временной базе; после этого upstream reviewer нашёл FIFO blocker. Это не shared upstream acceptance record. Актуальный запрос на его привязку и дефект ведутся в review PR #52. -- [[personal/plans/balda-callee-prism-plan|Архив прежнего плана]], [[personal/projects/archive/balda-reference-before-2026-10-14|архив прежней карточки и шаблонов]]. +- [[personal/projects/balda/balda|Balda: обзор]] +- [[personal/plans/balda-callee-prism-plan|Архив прежнего плана]] +- [[personal/projects/archive/balda-reference-before-2026-10-14|Архив прежней карточки и шаблонов]] ### История приёмки действующих версий @@ -81,7 +57,7 @@ Native CLI обнулил оба токена и expiresAt в private cache, и Итоговый `run-a1b236aaff2e3d877049cf790262ac37` той же Story завершился `succeeded`, `cleanup=done` 2026-10-14 около 08:36 UTC. Он начал сразу с implementer, без нового планового Human. На Darwin 27.0.0 / Go 1.26.9 ARM64 прошли gofmt, go vet, go test -count=1 ./..., сборка и smoke (--version, --help, greet, отсутствие имени и неизвестная команда с ожидаемым exit=2), ревью без findings, quality.json passed=true. SHA256 всех артефактов проверены. `execution_publish_artifacts` опубликовал `b5a238cd478ae89923cdbb4908c4f26fd7ddabfc` в `/Users/admin/Developer/go-cli-claude-test`, checkout чистый. Через Prism закрыты Task `eb-9840de48c9a2090fdb1b6a4f`, затем Story `eb-bae3eaa3bfcaeb17678c1bc7`; обе операции вернули completed=true, а read-only Beads подтвердил status=closed. Broker → Balda → [исходный Mattermost-тред](https://mm.qentra.top/qentra/pl/51m7gwce1pyyuebeya19wdrfqe) доставил итог: коммит опубликован, Task и Story закрыты. Это проверенный coding flow; первоначальный повтор потерянной MM-команды запускал оператор через штатный Broker retry, поэтому восстановление conversational ingress после NATS outage отдельно не объявляется проверенным. Эфемерные login URL в документации не хранить. -Молчание по [команде владельца](https://mm.qentra.top/qentra/pl/ae7rzayekjf9iquwx1duzs1dew) подтверждено: 2026-10-14 06:24:56 UTC Mattermost принял post, NATS вернул 503 insufficient resources, после трёх попыток ingress прекратил dispatch без ответа. История BALDA_EVENTS заняла около 1.9 ГБ при account max_store=2gb. Локальный max_store повышен до 16gb, история сохранена, Balda перезапущен. Новая ошибка запуска после этого доставлена. Повышение max_store было только восстановлением ёмкости. В локальной ветке Balda `223b85ad` теперь реализованы durable ingress outbox на AppKV, сохранение исходного envelope до публикации, повтор после рестарта, dedupe receipts, FIFO внутри сессии и ограниченные retry/retention. Для NATS добавлены отдельные бюджеты streams с резервом для Commands и отказом при попытке установить лимит ниже уже хранимых данных. После исчерпания входных retries Mattermost получает безопасный ответ в исходной теме со стабильным pending_post_id. SQLite restart, переполнение настоящего NATS и доставка через HTTP-fixture проверены. В работающий Balda эти исходники в этом прогоне не устанавливались; реальный conversational outage/recovery в Mattermost заново не запускался. +Молчание по [команде владельца](https://mm.qentra.top/qentra/pl/ae7rzayekjf9iquwx1duzs1dew) подтверждено: 2026-10-14 06:24:56 UTC Mattermost принял post, NATS вернул 503 insufficient resources, после трёх попыток ingress прекратил dispatch без ответа. История BALDA_EVENTS заняла около 1.9 ГБ при account max_store=2gb. Локальный max_store повышен до 16gb, история сохранена, Balda перезапущен. Новая ошибка запуска после этого доставлена. Повышение max_store было только восстановлением ёмкости. Реальный conversational outage/recovery в Mattermost после этого восстановления не проверен. ## Конфигурация и перезапуск diff --git a/personal/projects/balda/setup.md b/personal/projects/balda/setup.md index 0f864097..e8c661f9 100755 --- a/personal/projects/balda/setup.md +++ b/personal/projects/balda/setup.md @@ -1,6 +1,6 @@ # Balda — актуальный локальный запуск -Проверено: **2026-10-14** по работающему контейнеру, Compose, конфигурации и GitHub. +Проверено: **2026-10-14** по работающему контейнеру, Compose и конфигурации. Обзор: [[personal/projects/balda/balda|Balda]]. Broker, готовность кандидата и оставшаяся работа: [[personal/projects/balda/execution-broker|Execution Broker — текущий локальный контур]]. @@ -20,16 +20,6 @@ Config bind-mounted в `/workspace/.config/balda` read-only для контейнера; state и work доступны ему на запись. Файл `~/Developer/balda/.config/balda/config.yaml` относится к отдельному dev checkout и не управляет этим контейнером. -## Проверенная ветка и PR - -[PR #52](https://github.com/baldaworks/balda/pull/52): `codex/ingress-outbox-v2`, HEAD `085a0d43`, **OPEN**, не draft; все **11/11 CI checks SUCCESS**, включая native Ubuntu/macOS/Windows. Конфликтов нет, но review — **CHANGES_REQUESTED**, merge — **BLOCKED**. PR ещё не merged и не развёрнут. - -Локальные race/integration/lint/security/migration/E2E проверки и self-review 58 файлов завершены. Исправление сохраняет SQL handoff ответа и восстанавливает continuation после рестарта без второго webhook update; controls durably допускаются после continuation. SQLite migration 63 / PostgreSQL migration 28 требуют backup; исторические answered-записи автоматически не переигрываются. Подробности и границы — в карточке Broker выше. - -Новый [review blocker](https://github.com/baldaworks/balda/pull/52#pullrequestreview-5519740284): outbox нарушает FIFO одной сессии между разными actor targets; отдельный race probe на этом HEAD воспроизвёл переупорядочивание. Исправление и ссылка на shared Beads acceptance ещё требуются. Подробности и лог — в карточке Broker. - -PR #8 и #12 уже merged. Старые ссылки на открытые #8/#12, Kraken, Валеру и Zulip относятся к архивам. - ## Изменения и перезапуск | Изменение | Действие | @@ -44,7 +34,7 @@ PR #8 и #12 уже merged. Старые ссылки на открытые #8/# ## Plugins, skills и инструкции -Managed plugin revisions неизменяемые; вручную редактировать их содержимое в state нельзя. Каноническая документация выбранной ветки описывает управление пакетами через **Backoffice → Operations → Plugins**: Installed/Marketplaces, review exact revision, install/upgrade/enable/disable/rollback/remove. Проверять доступность поверхности на используемой версии, а не переносить команды из архивных runbooks: [plugins reference](https://github.com/mallexxx/balda/blob/085a0d435f727a1f4628a3259998c6498d42fcf2/docs/reference/plugins.md). +Managed plugin revisions неизменяемые; вручную редактировать их содержимое в state нельзя. Документация проекта описывает управление пакетами через **Backoffice → Operations → Plugins**: Installed/Marketplaces, review exact revision, install/upgrade/enable/disable/rollback/remove. Проверять доступность поверхности на используемой версии, а не переносить команды из архивных runbooks: [plugins reference](https://github.com/baldaworks/balda/blob/main/docs/reference/plugins.md). Management не сбрасывает существующие сессии. Новая сессия выбирает текущий catalog; существующая принимает capabilities через обычный `/reset`. Standalone skills также редактируются отдельно от уже закреплённого session snapshot. diff --git a/personal/projects/personal-os/personal-os-status-2026-10.md b/personal/projects/personal-os/personal-os-status-2026-10.md index b49693d7..dcd0e43f 100755 --- a/personal/projects/personal-os/personal-os-status-2026-10.md +++ b/personal/projects/personal-os/personal-os-status-2026-10.md @@ -49,7 +49,7 @@ confidence: 1 - **Чат-транспорт:** Mattermost (сервер на Kraken: `mattermost` + `mm-postgres`). Zulip выводится из эксплуатации ([[personal/plans/zulip-decommission]]). Discord не используется с 2026-05-11. - **Hermes:** профиль `hermes-whale` (Кит) на Mac, Mattermost/Telegram. Профиль Eagle существует, кроны на паузе. -- **Balda / Execution Broker** (сверено 2026-10-14): текущий контур на Mac, Mattermost и Codex ACP; старый Kraken-стек демонтирован. Live coding flow на прежних образах прошёл с артефактами, публикацией результата и cleanup. Новый Broker rc.26 проверен локально, но согласованное обновление и production-приёмка кандидата не выполнены; универсальная подготовка стеков, caches и inputs между запусками остаются в плане. Balda [PR #52](https://github.com/baldaworks/balda/pull/52) открыт, 11/11 CI SUCCESS, но CHANGES_REQUESTED / merge BLOCKED: воспроизведено нарушение FIFO одной сессии между ingress actor targets; acceptance в shared Beads ещё не привязан. Не merged/deployed. Подробности и ограничения: [[personal/projects/balda/execution-broker]], конфигурация: [[personal/projects/balda/setup]]. +- **Balda / Execution Broker** (сверено 2026-10-14): текущий контур на Mac, Mattermost и Codex ACP; старый Kraken-стек демонтирован. Live coding flow на прежних образах прошёл с артефактами, публикацией результата и cleanup. Новый Broker rc.26 проверен локально, но согласованное обновление и production-приёмка кандидата не выполнены; универсальная подготовка стеков, caches и inputs между запусками остаются в плане. Подробности и ограничения: [[personal/projects/balda/execution-broker]], конфигурация: [[personal/projects/balda/setup]]. - **Virfield** (сверено 2026-10-14): Tart + SSH nodes, новая hardening-версия исправляет Lume migration и lifecycle defects; текущий кандидат ещё не live принят ([[personal/projects/virfield]]). - **Obsidian vault** `~/obsidian/` — жив, синхронизация через git/NAS + Syncthing; MCP — `mcpvault`.