Files
obsidian-vault/personal/projects/balda/mattermost-dm-threads-2026-10-19.md
T

34 lines
7.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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]].