34 lines
7.3 KiB
Markdown
34 lines
7.3 KiB
Markdown
# Balda — треды ответов в личке Mattermost, 2026-10-19
|
||
|
||
Актуально: #77/#78 смержены; основной runtime обновлён на `138cc4a7`. [[personal/projects/balda/upstream-deploy-2026-10-19]]. Ранние статусы «не установлено» ниже исторические.
|
||
|
||
Текущее состояние: [[personal/projects/balda/setup]]. Сверено 2026-10-19 08:06 UTC.
|
||
|
||
Upstream `a908ee1a` возвращал DM/group locator до вычисления root_id сообщения. Поэтому обычные ответы отправлялись в корень лички. Настройки включения тредов в MattermostConfig нет.
|
||
|
||
`254f3e29` откачен отдельным `3f6a1363`. Ошибочный промежуточный патч отдельного approval-треда не устанавливался и удалён из checkout. Финальный коммит `eee69fc5` сохраняет исходный root_id либо ID нового сообщения пользователя в адресе доставки. Первый ответ Balda создаёт тред на этом сообщении; продолжение остаётся в нём. Session ID и public address key лички сохраняются. Подтверждение идёт в тот же тред, его ответ проверяется штатным обработчиком по root_id и raw user ID владельца. Обработчик standalone «1», новые поля DB и поиск единственного pending-вопроса не возвращены.
|
||
|
||
Проверки: full `GOMAXPROCS=2 go test -race -p 2 ./...`, golangci-lint, architecture audit — pass. Проверено пакетов: 142. Сквозной тест использует реальные ingress/reply adapters, permission/questions services, SQLite и локальный Mattermost HTTP fixture: обычный ответ и вопрос доставлены в один root пользовательского сообщения; меню одно; чужой ответ отвергнут; выбор владельца принят и сохранён; следующий вопрос в том же треде разрешается отдельно, два одновременно pending-вопроса отклоняются как неоднозначные. Табличная проверка DM/group подтверждает root дальнейших replies и стабильность session identity.
|
||
|
||
Это не внешняя приёмка нового сообщения через реальный Mattermost после restart: тестовые сообщения в production чат не посылались. Live websocket, health и native SSH roundtrip из реального контейнера установленным ключом проверены после restart; их проверка не объявляется доказательством отображения нового треда в UI.
|
||
|
||
Развёрнут `eee69fc5702197c67f0cd4de91b4cfea15dfaf1b`, build metadata `vcs.modified=false`. Контейнер перезапущен `2026-10-19T08:05:42.795540715Z`. Host binary и `/proc/1/exe` SHA256 совпадают: `5fe6e36607f70998984eaefd962f5b2d964162d9e7debabd9032449dcb9d1471`. Health/login: 200. Config, Compose и ACP bridge не менялись. SSH/Workspace Manager не переустанавливались. Состояние и прежний binary сохранены в `/Users/admin/.local/share/balda-workspace/backups/dm-thread-20261019T080529Z`.
|
||
|
||
Коммиты локальные по прямому решению пользователя; push не выполнялся. Evidence: `~/.local/share/balda-workspace/candidate/dm-threads/`.
|
||
|
||
## Два upstream PR — 2026-10-19 08:51 UTC
|
||
|
||
Открыты независимые PR к `baldaworks/balda:main`: [#77 — единичное меню подтверждения](https://github.com/baldaworks/balda/pull/77) и [#78 — ответы в тредах лички](https://github.com/baldaworks/balda/pull/78). Первоначально у каждого был один коммит от свежей публичной базы `e0edbe58`; после review в #78 добавлен второй коммит (см. ниже); checks race/lint/architecture прошли отдельно. Оператор подтвердил успешный прогон развёрнутой Balda в Mattermost.
|
||
|
||
Production остаётся на `eee69fc5`: этот этап готовил PR и не обновлял работающий binary. PR тредов дополнительно закрывает повтор старого ответа с сохранением точности времени; эта дополнительная защита проверена в PR-ветке и в production на этом этапе не устанавливалась. Подробности и CI-снимок: [[personal/projects/balda/upstream-prs-2026-10-19]].
|
||
|
||
## Исправление clock domain #78 — 2026-10-19 09:34 UTC
|
||
|
||
PR [#78](https://github.com/baldaworks/balda/pull/78), head `a693e4efcb94175777700d38d7cc83e7ecce971b`: время ответа сравнивается с серверным временем публикации вопроса Mattermost, сохранённым в question/outbox SQLite и PostgreSQL. Рассинхронизация часов, stale reply и recovery проверены; полный race, lint, architecture и diff --check прошли. В #78 два коммита; #77 не изменялся, production этим этапом не обновлялся. Точный CI-снимок и evidence: [[personal/projects/balda/upstream-prs-2026-10-19]].
|
||
|
||
## Upstream развёрнут — 2026-10-19 20:25 UTC+6 (Asia/Bishkek)
|
||
|
||
Основной `balda-mm-mac` работает на чистом upstream `138cc4a71d6889de30fe90e368f27f129fd8d792`; PR #77 и #78 смержены и входят в этот commit. Binary SHA256 `31c448af84428f83491d5fb8317549466f814f51c453de11fc8f6c9bd0836672`, `/proc/1/exe` совпадает; build metadata `vcs.modified=false`. Конфигурация, environment, mounts и выбранный Codex account сохранены. Миграция SQLite — 68, integrity/foreign keys — ok; все 49 sessions/metadata, 1952 events, 2 users/bindings и 28 questions из согласованного snapshot сохранены. Mattermost websocket подключён, health/login 200, `codex login status` успешен; SSH UID 1000 установленным ключом из Balda до зарегистрированного target прошёл. Тестовые сообщения в Mattermost и модельные запросы этим deployment не отправлялись.
|
||
|
||
Рабочий runtime больше не использует частные патчи `eee69fc5`. Исторический checkout сохранён без reset/rebase; новая сборка сделана отдельно. Предыдущие снимки ниже относятся к прежним этапам. Актуальные проверки, CI и откат: [[personal/projects/balda/upstream-deploy-2026-10-19]].
|