Files
obsidian-vault/personal/plans/balda-mm-pr-plan.md
T

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/ или не пушить вовсе.

План работ (по шагам)

  1. Зафиксировать базу. check + apply всех дельт в worktree → go build ./....
  2. Починить P1.1 (двойной префикс) в коде handler.go.
  3. Тесты транспорта (channel/mattermost/): locator_codec_test.go, inbound_test.go, adapter_test.go (по образцу zulip, httptest-сервер для REST).
  4. Тесты хендлера (handlersfx/mattermost_ingress_test.go).
  5. P1.4 — README + docs/balda.md.
  6. Quality gates — build / vet / golangci-lint / go-arch-lint / race-тесты.
  7. Коммиты — по смыслу, Conventional Commits.
  8. Обновить 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.

Связанные заметки