Velocity Insights

Три ключевые метрики из research dossier (DORA / SPACE / DX Core 4) — Sessions-per-task, Active ratio, Rework cycles. Никаких новых интеграций: только данные, которые Controlum уже собирает.

Что считается#

1. Sessions per task#

Группирует сессии по ticket-id, который вытаскивается из branch'а regex'ом \b[A-Z][A-Z0-9]+-\d+\b. Покрывает Jira, Linear, Yandex Tracker и любую другую систему, использующую PREFIX-N в названиях веток. Отвечает на вопрос “сколько задач” без обращения к трекеру.

2. Session active ratio#

Доля времени сессии, когда между событиями был gap ≤ 60 секунд (всё что больше — классифицируется как “ждём ответа человека”). Operationalises SPACE “Flow Efficiency” на уровне сессии: если average ratio низкий, это значит AI догоняет ревьюера, а не наоборот.

3. Rework cycles#

Кластеризует сессии по одинаковому cwd внутри окна 24h. Когда ≥2 сессий открывают один и тот же репо за сутки — это сигнал rework. Operationalises Faros “5th DORA metric” (Rework Rate) на session grain.

Branch capture#

Daemon при каждом discover_session делает git symbolic-ref --short HEAD в cwd — best-effort, на detached HEAD или not-a-git-tree возвращает пустую строку. Сервер хранит в новом столбце sessions.branch (migration 0010). Ребейзы и переименования веток не ломают историю: уже посчитанные snapshot-row'ы лежат в plugin_velocity_metric_snapshots и не пересчитываются.

Endpoints#

  • GET /plugins/velocity-insights/metrics — fresh-compute всех трёх (или конкретной через ?metric_key=) + запишет snapshot
  • GET /plugins/velocity-insights/metrics/history — append-only история snapshot'ов для trend-чартов
  • GET /plugins/velocity-insights/sessions/{id}/metrics — per-session breakdown (active_ratio + ticket_id)

Query parameters#

  • window_days — окно для Sessions-per-task / Active ratio (default 30)
  • window_hours — окно для Rework cycles (default 24)
  • min_sessions — минимум сессий в кластере чтобы он засчитался (default 2)