# tech_stack ## Язык / рантайм - Go **1.25.0** (go.mod `go 1.25.0`). Модуль `github.com/kamelion/ratatoskr-go`. - Сборка: статический бинарь, `CGO_ENABLED=0`. Локальный Go-тулчейн на хосте: `export PATH=/opt/data/.local/go/bin:$PATH` (go1.25.0 linux/amd64). ## Основные зависимости (go.mod) - `gopkg.in/yaml.v3 v3.0.1` — парсинг config.yaml. - `modernc.org/sqlite v1.56.0` — SQLite без CGO (чистый Go). - (indirect) google/uuid, go-humanize, mattn/go-isatty, x/sys, modernc.org/libc/mathutil/memory. ## Внешние процессы - **opencode** (opencode.ai) — внешний процесс для субагентов (analyst/dev/reviewer). Управляется через internal/opencode (Runner, LiveRegistry). Настраивается в конфиге (opencode.bin / config / config_dir / hard_timeout / idle_timeout / poll_ms). ## Сборка / Makefile - `make build` — go build -ldflags="-s -w -X main.version=commit- -X main.updateToken=..." -o ratatoskr ./cmd/ratatoskr/. - `make test` — go test ./... -v -count=1 -timeout 120s. - `make vet` — go vet ./... `make fmt` — go fmt ./... - `make run` — build + ./ratatoskr -config config.yaml. - `make cross` — кросс-сборка linux/amd64 + windows/amd64 (ratatoskr-windows-amd64.exe — Windows-машина Камиля). - GIT_SHA вшивается в main.version; UPDATE_TOKEN — в main.updateToken (секрет только у CI). ## CI (.gitea/workflows/ci.yaml) - Job `test`: go test ./... + go vet ./.... - Job `build-and-package` (matrix linux/amd64+windows/amd64): собирает и публикует в Gitea Packages на `main` в версию `commit-/` + companion-файлы `.version`/`.sha256`. - Секреты: TC_GITEA_TOKEN (write:packages), TC_UPDATE_TOKEN (read:package), GIT_MAIN_URL.