Files
ratatoskr-go/.serena/memories/conventions.md
ki.sagidullin 7c7afa6875
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
chore: onboard Serena — add .serena with project memories
Сохраняем онбоардинг-память проекта (core, tech_stack, conventions,
suggested_commands, task_completion) в .serena и коммитим служебную
директорию, чтобы она была доступна на сервере. Директория НЕ исключена
в .gitignore (локально исключаются только cache и project.local.yml).
2026-08-17 22:48:53 +05:00

2.5 KiB
Raw Permalink Blame History

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.