From 56b800e9274d5432c82683e30f52ca58a0d016bc Mon Sep 17 00:00:00 2001 From: Alexey Martemyanov Date: Wed, 14 Oct 2026 18:18:24 +0600 Subject: [PATCH] [2026-10-14] eagle: personal/projects/balda/execution-broker.md personal/projects/balda/setup.md --- personal/projects/balda/execution-broker.md | 14 ++++++++------ personal/projects/balda/setup.md | 2 +- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/personal/projects/balda/execution-broker.md b/personal/projects/balda/execution-broker.md index c2d287dd..8dc15d98 100644 --- a/personal/projects/balda/execution-broker.md +++ b/personal/projects/balda/execution-broker.md @@ -4,7 +4,7 @@ ## Состояние приёмки -`main` и `origin/main` Broker остаются на `437cbf8`. Локальный кандидат `0.1.0-rc.26` зафиксирован в `codex/production-readiness` на `b64a1ba83c82475b08276ea3fb6a54c99d4a1509`. Смежные исправления Balda — отдельная ветка `codex/production-readiness` на `223b85ad213f77edebd452147d0058588813fe6c`, checkout `/private/tmp/execution-broker-balda-production`. Кандидат не развёрнут и не опубликован; новых PR нет. Указанная Balda `223b85ad` — отклонённый прототип; актуальный HEAD `49ce205d` находится в отдельной ветке `codex/ingress-outbox-v2`, см. пересмотр после ревью ниже. +`main` и `origin/main` Broker остаются на `437cbf8`. Локальный кандидат `0.1.0-rc.26` зафиксирован в `codex/production-readiness` на `b64a1ba83c82475b08276ea3fb6a54c99d4a1509`. Смежные исправления Balda — отдельная ветка `codex/production-readiness` на `223b85ad213f77edebd452147d0058588813fe6c`, checkout `/private/tmp/execution-broker-balda-production`. Кандидат не развёрнут и не опубликован; новых PR нет. Указанная Balda `223b85ad` — отклонённый прототип; актуальный HEAD `07546cae` находится в отдельной ветке `codex/ingress-outbox-v2`, см. пересмотр после ревью ниже. Действующий Broker — `execution-broker:production-a3594c3`, gateway — `execution-broker-gateway:quality-437cbf8`, Prism — `execution-prism-adapter:session-fix-20261004`. Сверка обнаружила drift: `broker.json` и `worker.json` выбирают разные immutable images для `linux-smoke` и `linux-opencode-deepseek`; три coding-профиля worker.json по-прежнему содержат Docker socket/group. В исходниках rc.26 этот доступ запрещён, а несовпадение image pin отклоняется до выделения worker с освобождением недоставленного credential. До применения кандидата старый работающий контур этих защит не получает. macOS bootstrap-пакеты и dynamic build contexts также требуют согласованного обновления Runner/Callee/config/workflow pins. Проверки из предыдущей приёмки ниже относятся к прежним развёрнутым версиям. @@ -24,15 +24,17 @@ ### Пересмотр патчей Balda после ревью — 2026-10-14 -Старая `codex/production-readiness` / `223b85ad` — отклонённый прототип. Текущая `codex/ingress-outbox-v2` в `/private/tmp/execution-broker-balda-upstream` содержит три локальных коммита поверх upstream `875d78eefd846ea2d54db37260409f412ed9c42f`: `8615d512` (outbox), `1fd3e101` (continuation и README), `49ce205d` (marketplace symlink paths). go.mod/go.sum не менялись, рабочее дерево чистое. Push, PR и deploy не выполнялись. +Старая `codex/production-readiness` / `223b85ad` — отклонённый прототип. Текущая `codex/ingress-outbox-v2` в `/private/tmp/execution-broker-balda-upstream` имеет HEAD `07546caedcaa639c972cb97dd4d0e082a27f1023`. Upstream `9dcd366023105e217467510ef39582c2133ac5b9` влит merge-коммитом `09224f7e` без конфликтов и переписывания истории. Ветка на шесть коммитов впереди и не отстаёт, дерево чистое, go.mod/go.sum не менялись. Push, PR и deploy не выполнялись. -Локальная запись означает accepted независимо от NATS; publisher повторяет исходный envelope. Terminal receipts/expired tombstones удаляются через семь дней, pending не удаляются GC. NATS budgets включаются явно через `balda.nats.bounded_streams: true`; обычное обновление прежних caps не меняет. Policy принадлежит `jobs/commandoutbox`, state/bus wiring — `commandoutboxfx`; архитектурный enforcement обновлён. +Предыдущие исправления сохранены: `8615d512` — accepted после локального сохранения независимо от NATS, семидневный GC terminal receipts/tombstones, opt-in NATS budgets и правильные outbox ownership/wiring; `1fd3e101` — replay текстового ответа и README; `49ce205d` — canonical marketplace paths и macOS tests. -После дополнительного ревью исправлена потеря continuation: повтор исходного provider message восстанавливает её из сохранённой `answered`-записи с тем же question-based ID/dedupe key; новое inbound ID и изменённый текст retry не заменяют ответ и не создают обычный turn. Проверены переполнение, ошибка AppKV, uncertain write и сбой до enqueue с закрытием/повторным открытием SQLite. README теперь документирует `bounded_streams`, default, env override и безопасное включение. +Последний P1 Telegram inline исправлен в `4713490a825f5f8b8245b22bdc7b13f5c811a9bf`. Повтор сохранённого выбора тем же пользователем восстанавливает continuation из answered-записи, в том числе после рестарта и при новом callback query ID. Другой выбор или пользователь не заменяют ответ. Telegram text/inline continuations получают общий outbox через локальный named port; прямой публикации в NATS нет. Положительный Selected отправляется только после non-nil local admission receipt. Ошибки admission/ack допускают повтор с тем же question-based ID/dedupe key. Handler-тесты с реальной SQLite проверяют dispatch error, uncertain write, сбой до dispatch, NATS outage, Telegram ack error и отсутствующий порт. Fx-тест подтверждает единый dispatcher у chat, commands и Telegram questions. -Финальный **`go test -race ./...` прошёл в штатном macOS TMPDIR**, без `TMPDIR=/private/tmp` workaround. Причина исходных plugin/catalog failures устранена: discovery вычисляет relative path относительно canonical root, тесты сравнивают canonical paths. Отдельный symlink-root regression до исправления падал, после него проходит. Lint (0 issues), architecture, govulncheck (0 reachable vulnerabilities), build и обе tagged race integration suites SQLite/PostgreSQL прошли. Первый полный прогон дополнительно поймал MCP shutdown timeout; baseline и три отдельных повтора прошли, затем прошёл и полный финальный прогон. Этот первый сбой сохранён в отчёте, причина нагрузки не объявляется доказанной. +Финальный `go test -race ./...` прошёл в штатном macOS TMPDIR. Прошли обе storage integration race suites (PostgreSQL на свежем одноразовом контейнере, затем удалён), lint (0 issues), architecture, govulncheck (0 reachable vulnerabilities), обе migration validations, JetStream, ingress suites и build. Test cache использовался штатно. Нативные Windows/Linux CI и GitHub checks этим локальным прогоном не объявляются выполненными. Первоначальная ошибка тестовой callback fixture исправлена; её лог сохранён вместе с финальными результатами. -Отчёт и все логи: `/Users/admin/Developer/execution-broker/state/production-readiness-20261014/review-followup.json`. Beads `balda-7w4` закрыта после финальных проверок в явно локальной временной базе; это не shared task и не подтверждение независимого PR review. CLI: `/private/tmp/execution-broker-native-tools/bd`, в PATH не установлен; проектная база без issue_prefix не переинициализировалась. +Отдельно обнаружены устаревшие CI selectors: projection-replay указывал execution вместо текущего jobs, ingress regex не выбирал webhook tests. Коммит `07546cae` исправляет эти команды: настоящий projection replay прошёл 15 раз, ingress job теперь проверяет все тесты четырёх пакетов. Названия required jobs сохранены. + +Отчёт, история проверок и логи: `/Users/admin/Developer/execution-broker/state/production-readiness-20261014/review-followup.json`. Beads `balda-7w4` закрыта после финальных проверок в явно локальной временной базе; это не shared task и не результат независимого PR review. CLI: `/private/tmp/execution-broker-native-tools/bd`, в PATH не установлен; проектная база без issue_prefix не переинициализировалась. ### История приёмки действующих версий diff --git a/personal/projects/balda/setup.md b/personal/projects/balda/setup.md index 4a9aac41..d9dedad2 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 — текущий локальный контур]]. -Broker-кандидат 2026-10-14: `0.1.0-rc.26` / `b64a1ba`, локальные проверки сохранены отдельно. Старая Balda `223b85ad` / `codex/production-readiness` отклонена после ревью четырёх дефектов; её зелёные тесты не подтверждали готовность upstream PR. Исправленная ветка `codex/ingress-outbox-v2` / `49ce205d` подготовлена на upstream `875d78ee` в `/private/tmp/execution-broker-balda-upstream`. Дополнительный коммит `1fd3e101` восстанавливает continuation из answered-записи при повторе исходного inbound и обновляет README; `49ce205d` исправляет macOS marketplace paths. Полный локальный race-gate прошёл в штатном TMPDIR, обе storage integration suites и остальные проверки прошли; подробности первого неудачного прогона и финального результата — в карточке выше. Изменения не развёрнуты, контейнер `balda-mm-mac` остаётся на прежнем образе. Выбор ветки или коммит не меняет действующий сервис. +Broker-кандидат 2026-10-14: `0.1.0-rc.26` / `b64a1ba`, локальные проверки сохранены отдельно. Старая Balda `223b85ad` / `codex/production-readiness` отклонена после ревью четырёх дефектов; её зелёные тесты не подтверждали готовность upstream PR. Исправленная ветка `codex/ingress-outbox-v2` / `07546cae` синхронизирована merge’ем с upstream `9dcd3660` в `/private/tmp/execution-broker-balda-upstream`. Дополнительный коммит `1fd3e101` восстанавливает continuation из answered-записи при повторе исходного inbound и обновляет README; `49ce205d` исправляет macOS marketplace paths. `4713490a` восстанавливает Telegram inline continuation через общий outbox; `07546cae` исправляет устаревшие CI test selectors. Полный локальный race-gate прошёл в штатном TMPDIR, обе storage integration suites и остальные проверки прошли; подробности первого неудачного прогона и финального результата — в карточке выше. Изменения не развёрнуты, контейнер `balda-mm-mac` остаётся на прежнем образе. Выбор ветки или коммит не меняет действующий сервис. _Проверено: 2026-10-09._