chore: onboard Serena — add .serena with project memories
Some checks failed
CI / test (pull_request) Failing after 41s
CI / build-and-package (amd64, linux) (pull_request) Successful in 50s
CI / build-and-package (amd64, windows) (pull_request) Successful in 39s

Сохраняем онбоардинг-память проекта (core, tech_stack, conventions,
suggested_commands, task_completion) в .serena и коммитим служебную
директорию, чтобы она была доступна на сервере. Директория НЕ исключена
в .gitignore (локально исключаются только cache и project.local.yml).
This commit is contained in:
ki.sagidullin
2026-08-17 22:48:53 +05:00
parent 43266ea04f
commit 7c7afa6875
8 changed files with 330 additions and 0 deletions

View File

@@ -0,0 +1,39 @@
# conventions
## Стиль / кодстайл
- Стандартный Go-стиль; гофм `gofmt`/`go fmt ./...`. Документация-комментарии и
package-doc на русском языке (в START-комментариях файлов и doc-комментариях).
- Типизация: строгие типы, интерфейсы для абстракций (Decider, LiveProber).
- Свой тип `config.Duration` для времени (YAML-строки "5s"/"10m"), метод `.Duration()`.
## Обработка ошибок
- Ошибки классифицируются по идентификаторам классов в исходниках (см. ниже).
- Ошибка-обёртка: `fmt.Errorf("%w: %v", ErrXxx, err)`.
- `errors.Join` для склейки нескольких ошибок валидации (config.Validate).
## Классы ошибок (маркируются в коде, документированы в README)
| Блок | Коды | Где |
|---|---|---|
| C | C1C4 | internal/config |
| A | A1A4 | internal/analyst |
| M | M1M5 | internal/chat |
| O | O1O4 | internal/opencode |
| S | S1S5 | internal/storage |
| W | W1W5 | internal/worker |
| E | E1E4 | internal/worker (репозитории) |
| R | R1R6 | internal/worker/review_errors.go |
| U | U1U6 | internal/update |
## Архитектурные конвенции
- **Composition root** — internal/app; подсистемы собираются там, лимиты Core
(MaxTurns=15, MaxConfirmCycles=3, MaxQuestionsPerTurn=5) в core.New.
- **Агенты** (analyst.md/dev.md/reviewer.md) — markdown-промпты, встроены через go:embed
(internal/agents/*.md + embed.go), распаковываются в config_dir. Вердикт — строгий JSON.
- Репо-клонирование/воркеры — через gitops; ветки задач `feat/<taskTag>` (см. mem:core).
- Обратная совместимость: поле `Repo` (одиночный) и `Repos` (список); EffectiveRepos/
SetReposFromDB/ReposJoined в storage/models.go.
## Версии
- `app.Version` — семантическая major.minor.patch (ручной инкремент: patch=фиксы,
minor=новая обратно-совместимая функциональность, major=несовместимые изменения).
- `main.version` (ldflag) — build-идентификатор `commit-<sha7>`, отдельно от app.Version.