Files
jellybit/Taskfile.yml
T
avandClaude Opus 4.8 6792f7082a ревью: детерминированный гейт task gate и карта проекта для архитектурного прохода
scripts/gate.sh гонит всё, у чего есть объективный оракул (build, vet, lint,
gofmt, тесты, повтор на флаки, -race, покрытие изменённых строк, миграции,
ER-схема по диффу, gitleaks, govulncheck), не останавливаясь на первом отказе:
ревью нужна полная картина. Пропущенный шаг попадает в сводку — молча
пропущенная проверка даёт ложное ощущение проверенности.

scripts/diff-coverage.py считает покрытие именно изменённых строк: общий
процент по пакету для ревью бесполезен.

scripts/review-context.sh собирает вход, которого нет в диффе — пакеты с
назначением, граф внутренних зависимостей, публичную поверхность и инвентарь
концепций. Агент, видящий только дифф, не знает словаря проекта и потому не
может судить об архитектуре.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-23 18:17:28 +03:00

93 lines
2.9 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# yaml-language-server: $schema=https://taskfile.dev/schema.json
#
# Запуск команд проекта через Task (https://taskfile.dev).
# Список задач: `task --list`.
version: '3'
vars:
BINARY: jellybit
PKG: ./cmd/jellybit
# Версия линтера для воспроизводимой установки (см. задачу setup).
GOLANGCI_VERSION: v2.12.2
tasks:
default:
desc: Список доступных задач
cmds:
- task --list
silent: true
run:
desc: 'Локальный запуск (нужен ./config.toml с db_path -> ./jellybit.db)'
deps: [assets]
cmds:
- go run {{.PKG}} --config ./config.toml
build:
desc: Статический бинарь linux/amd64 для сервера (Intel N150)
deps: [assets]
cmds:
- CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -trimpath -ldflags='-s -w' -o {{.BINARY}} {{.PKG}}
test:
desc: Прогон тестов
cmds:
- go test ./...
lint:
desc: Запуск golangci-lint
cmds:
- golangci-lint run
gate:
desc: 'Детерминированный гейт ревью: build/vet/lint/test/race/покрытие диффа/миграции/секреты. BASE=<rev> — база диффа'
cmds:
- bash scripts/gate.sh {{.BASE}}
review:context:
desc: 'Вход для архитектурного прохода ревью: пакеты, граф зависимостей, публичная поверхность, инвентарь концепций'
cmds:
- bash scripts/review-context.sh
tidy:
desc: go mod tidy
cmds:
- go mod tidy
assets:
desc: 'Идемпотентный фетч вендорных ассетов в web/static/vendor (по web/assets.manifest, проверка sha256; Node не нужен)'
cmds:
- |
set -e
while IFS= read -r line; do
case "$line" in ''|\#*) continue;; esac
set -- $line
dest=$1; url=$2; sum=$3
file="web/static/$dest"
if [ -f "$file" ] && echo "$sum $file" | sha256sum -c --status - 2>/dev/null; then
continue
fi
mkdir -p "$(dirname "$file")"
echo "↓ $dest"
curl -fsSL --retry 3 -o "$file" "$url"
echo "$sum $file" | sha256sum -c -
done < web/assets.manifest
image:
desc: Docker-образ из готового бинаря (см. docs/adr docker-deploy)
deps: [build]
cmds:
- docker build -t jellybit:dev .
clean:
desc: Удалить собранный бинарь
cmds:
- rm -f {{.BINARY}}
setup:
desc: Установка инструментов разработки (линтер + git-хуки lefthook)
cmds:
- go install github.com/golangci/golangci-lint/v2/cmd/golangci-lint@{{.GOLANGCI_VERSION}}
- lefthook install