[2026-09-26] eagle: family/how-to/truenas-infrastructure.md personal/plans/balda-mm-pr-plan.md personal/projects/balda/balda-mattermost-connector.md personal/projects/balda/balda-mm-delegation-plan.md personal/tech/balda-go-fx-pitfalls.md

This commit is contained in:
Alexey Martemyanov committed 2026-09-26 14:57:15 +06:00
1 parent 036e7a7091
commit 1bf8320446
5 files changed
+318 -57

No files matched your search

+45
View File
@@ -1223,6 +1223,51 @@ git rm -r --cached tools/ # 🔴 файлы ОСТАЮТСЯ на диске
⚠️ Артефакты деплоя (`mm-*.sh` ops-скрипты) в PR не шлём — только код транспорта,
wiring, тесты, доки.
## 🔴 Целевой репозиторий определять через API, не по имени remote'а
Два remote'а выглядели так: `origin` = `mallexxx/balda` (форк), `upstream` = `normahq/balda`.
Но **реальный родитель форка — `baldaworks/balda`**, а `normahq/balda` — просто редирект:
```bash
gh repo view mallexxx/balda --json parent
# → parent: baldaworks/balda
gh repo view normahq/balda --json owner
# → owner.id: O_kgDOEgAHrw ← тот же org, что у baldaworks/balda = редирект, не отдельный репо
```
📌 Создавать PR в **`baldaworks/balda`**, а `--head` указывать как `mallexxx:<branch>`
(«владелец:ветка»). Полный URL форка в `--head` ломает `gh`.
```bash
gh pr create --repo baldaworks/balda --base main \
--head mallexxx:feat/mattermost-channel \
--title "…" --body-file /tmp/pr-body.md
```
⚠️ **Проверять базу перед пушем:** `git rev-list --left-right --count upstream/main...HEAD`
→ `0 7` значит «0 позади, 7 впереди» — идеальная база, rebase не нужен.
## 🔴 CI на чистом раннере — это НАСТОЯЩАЯ приёмка сборки (шире локальных гейтов)
Локально `cmd/balda` падал на
`TestInitCommand_NonInteractiveAutoSelectsRootAndGeneratesDetectedAgents`.
В CI (чистый раннер, свой образ) **тот же тест прошёл**.
Локальные гейты (`build`/`vet`/`golangci-lint`/`go-arch-lint`/`go test`) — **необходимое,
но не достаточное** условие. Они видят состояние **моей** машины: остатки кэшей, локальные
конфиги, переменные окружения, версии инструментов. CI видит чистое дерево.
**Пайплайн в `baldaworks/balda` (8 джобов):**
`architecture-lint`, `lint`, `test`, `ingress-e2e`, `jetstream-integration`,
`postgres-integration`, `sqlite-integration`, `projection-replay`.
📌 **Порядок:** локальные гейты → push → **дождаться CI** → только потом говорить
«готово». Не объявлять готовность по локальным гейтам, если в репо есть CI.
⚠️ Локальный фейл, которого нет в CI, — **не повод чинить код**: сначала проверить, не
особенность ли это локальной среды (`git stash` + повтор, или прогон в контейнере).
## Связанные заметки
- [[personal/projects/balda/balda-mattermost-connector]] — Фаза 2, где всё это найдено