# task_completion Считается, что задача по коду выполнена строго после: 1. **Формат/линт:** `go fmt ./...` (без неотформатированных файлов). 2. **Тесты:** `go test ./... -v -count=1 -timeout 120s` — все проходят (`make test`). 3. **Статический анализ:** `go vet ./...` — чисто (`make vet`). 4. **Сборка:** `go build -o ratatoskr ./cmd/ratatoskr/` (`make build`) — компилируется. (Кросс-сборка `make cross` — только при необходимости.) 5. **Пересмотр контрактов:** если менялась сигнатура `App.New(configPath, version, updateToken string)` — обновить вызовы в `internal/app/app_test.go` (иначе go vet падает). 6. Коммит осмысленными атомарными коммитами в feature-ветку `feat/` от origin/main. Рабочий процесс Ratatoskr (агент dev в этом конвейере): изучить код, реализовать так, чтобы все acceptance criteria были закрыты, закоммитить в ветку, вернуть отчёт.