5.2 KiB
5.2 KiB
Balda — Mattermost connector: план подготовки PR в апстрим
Создан 2026-09-26. Статус: в работе. Команда Alex: «Коммит текущего стейта и продолжай пока не стыдно будет открывать PR mattermost connector. Со всеми поддерживаемыми фичами и тестами. Вперёд! Без вопросов и требующих апрува команд.» Часть personal/projects/balda/balda-mm-delegation-plan (Фаза 2 → PR в апстрим).
Цель
PR в baldaworks/balda: полный Mattermost-транспорт — все поддерживаемые фичи Балды,
тесты, зелёные quality gates, доки. Ветка feat/mattermost-channel, 1 коммит уже есть
(004fda2f), рабочий счёт — 11 изменённых + 21 новых файлов в worktree.
Что уже готово (не переделывать)
- Пакет
channel/mattermost/(client, locator_codec, inbound, adapter, media, ingress, formatting, presentation, mattermostfx) — закоммичен004fda2f, 40 файлов. - Все quality gates были зелёные на
004fda2f. - 6 причин тишины найдены и устранены живым запуском на Kraken (см.
balda-kraken-mm-deploy.md). handlersfx/mattermost_ingress.go— написан в worktree, НЕ закоммичен.
Пробелы, найденные ревизией кода (2026-09-26, вечер)
P1 — дефекты, которые полезут в PR и подведут ревью
| # | Дефект | Где | Почему важно |
|---|---|---|---|
| P1.1 | Возможен двойной транспортный префикс в principal |
actors/command/start/handler.go:~420 |
Прошлый фикс был только в БД → дефект вернулся. В PR пойдёт сырой код |
| P1.2 | channel/mattermost/*_test.go — 0 файлов |
channel/mattermost/ |
«Со всеми тестами» — сейчас только 2 теста в cmd/balda. Апстрим-транспорт zulip имеет ~4 тест-файла |
| P1.3 | handlersfx/mattermost_ingress.go не покрыт тестами и не закоммичен |
handlersfx/ |
Ядро интеграции, написанное «на веру» |
| P1.4 | README / docs/balda.md не упоминают Mattermost |
корень, docs/ | Требование AGENTS.md; осталось открытым из Фазы 2 |
| P1.5 | SendDraftPlain — проверить, что edit-in-place покрыт |
adapter.go |
Отклонение от плана, надо подтвердить тестом |
| P1.6 | SendTyping — no-op; в ProgressPolicy Typing:false |
adapter.go, inbound.go |
Проверить, что нет мёртвого кода (линтер уже проходил, но повторно) |
P2 — качество PR
- Прогнать
go test -race ./...на затронутых пакетах, отделить апстримные фейлы (git stash). golangci-lint,go-arch-lint— перепроверить после новых файлов.- Конвенциональные коммиты, разбивка: transport code / wiring / tests / docs.
- Убрать из дерева артефакты, которым в PR не место (
tools/mm-*.sh, дельта-JSON) — решить: в отдельный коммит сtools/или не пушить вовсе.
План работ (по шагам)
- Зафиксировать базу.
check+applyвсех дельт в worktree →go build ./.... - Починить P1.1 (двойной префикс) в коде
handler.go. - Тесты транспорта (
channel/mattermost/):locator_codec_test.go,inbound_test.go,adapter_test.go(по образцу zulip,httptest-сервер для REST). - Тесты хендлера (
handlersfx/mattermost_ingress_test.go). - P1.4 — README +
docs/balda.md. - Quality gates — build / vet / golangci-lint / go-arch-lint / race-тесты.
- Коммиты — по смыслу, Conventional Commits.
- Обновить Obsidian — итог и что осталось.
Definition of Done
go build ./...,go vet ./...= 0.golangci-lint run= 0 issues.go-arch-lint check --project-path .= OK.- Тесты транспорта + хендлера зелёные,
-race. - Ни одного дефекта из
balda-go-fx-pitfallsв коде. - Доки описывают Mattermost.
- Коммиты в
feat/mattermost-channel, готово кgit pushи PR.
Связанные заметки
- personal/projects/balda/balda-mattermost-connector — Фаза 2 (код)
- personal/projects/balda/balda-kraken-mm-deploy — Фаза 3 (деплой)
- personal/tech/balda-go-fx-pitfalls — fx-питфоллы + дельта-апплаер
- personal/plans/balda-mm-endtoend-plan — сквозной путь