triage-flaky-test
Скилл triage-flaky-test предназначен для расследования конкретного нестабильного теста в CI. Он не сводит проблему к совету «перезапустите job», а ведёт проверку от идентификации теста к классификации причины и выбору следующего действия: исправить тест или общий helper, временно изолировать его через quarantine либо передать вопрос владельцам кода. В качестве входа ожидаются полностью квалифицированное имя теста и репозиторий; при необходимости репозиторий выводится из git remote и приводится к нижнему регистру. Для работы с Datadog skill сначала определяет доступный backend: MCP-инструменты, а при их отсутствии CLI pup. Для pup требуется установленный и аутентифицированный клиент, а при ответе 401 или 403 нужно обновить его авторизацию. На первом шаге навык получает карточку flaky-теста по fingerprint_fqn или по комбинации имени, suite и репозитория. Из результата извлекаются уникальный fingerprint, текущее состояние active, quarantined, disabled или fixed, доля неудач, категория нестабильности, code owners и потерянное время CI. Затем за последние семь дней собирается история провалов с сообщениями ошибок, stack trace, ветками и идентификаторами pipeline. Это позволяет отличить проблему, проявляющуюся только на одной ветке, от широко распространённого сбоя. Для оценки blast radius навык группирует ошибочные pipeline по имени, использует первые десять идентификаторов и прямо отмечает, что такой счётчик приблизителен: другие ошибки в том же запуске не обязательно вызваны данным тестом. Главный принцип расследования — читать цепочку ошибки снизу вверх и искать внутреннюю причину, а не принимать первую строку за диагноз. Проверяются гонки, порядок выполнения, общий mutable state, время, сеть, внешняя среда, утечки ресурсов, случайность и операции ввода-вывода. Для timeout нужен детерминированный контроль медленной операции, для concurrency — синхронизация и изоляция состояния, для времени — управляемые часы, для сети — boundary mock или тестовый сервер, для файлов — временный каталог с гарантированной очисткой. Навык запрещает маскировать проблему увеличением timeout, sleep, retry, ослаблением assertions или исправлением только одного из нескольких общих call sites. Если корень неизвестен, это не повод объявлять безопасный code fix. Решение зависит от доказательств: при неизвестной категории или неподтверждённой причине рекомендуется quarantine, а при подтверждённой причине и корректном исправлении — fix. Порогом для quarantine служит failure rate выше десяти процентов или blast radius более пяти pipeline; при меньшей доле и ясной причине возможен fix, а неизвестная причина ведёт к эскалации. Запись quarantine не выполняется молча: сначала показываются fingerprint, эффект и обратимость, затем требуется явное одобрение пользователя. Без fingerprint навык вообще не делает write. После одобрения тест переводится в quarantined, а возврат в active остаётся обратимой операцией. Поэтому карточка полезна для первичного triage, но не заменяет проверку stack trace, владельцев репозитория и фактического состояния Datadog перед изменением CI.
Для чего подходит
- Исследование конкретного flaky-теста
- Классификация паттерна и причины нестабильности
- Выбор между исправлением, quarantine и эскалацией
Установка
Сначала прочитайте SKILL.md и scripts в исходном репозитории. Затем выполните команду в каталоге проекта:
npx skills add https://github.com/datadog-labs/agent-skills/tree/main/dd-software-delivery/triage-flaky-test