Skip to content
Back to skills

Incident Mitigation

ASecurity

Звать, когда разбор уже назвал, что красное или стоит, и надо выбрать меру: перезапуск, новый толчок, разморозку очереди, метку blocker, откат, новую ветку взамен воскресшей, остановку при исчерпанной квоте. До того, как мера выполнена, а не после.

  • 5 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 25, 2026
ai-agentsgitapi

Works with

  • cli
  • api

Security analysis

A100/100

Scanned September 25, 2026

npx -y skills add ArtVsMark/Engineering-Incidents-Playbook --skill incident-mitigation --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Incident Mitigation?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Incident Mitigation
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/artvsmark-incident-mitigation/badge)](https://www.skillsdirectory.com/skills/artvsmark-incident-mitigation)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: incident-mitigation
description: >-
  Звать, когда разбор уже назвал, что красное или стоит, и надо выбрать меру:
  перезапуск, новый толчок, разморозку очереди, метку blocker, откат, новую
  ветку взамен воскресшей, остановку при исчерпанной квоте. До того, как мера
  выполнена, а не после.
argument-hint: "[что назвал разбор]"
---

# Выбор меры при инциденте

> **Читатель:** агент — окно, у которого разбор назвал, что красное, в момент выбора меры.

## Зачем это существует

Меры здесь проваливались не потому, что их не было, а потому, что их **эффект
не проверяли** или **выбирали по привычке**, а не по причине.

- **28 августа** гейт связи с задачей отказал из-за тела изменения. Тело
  поправили и запустили `rerun_failed_jobs` — гейт **снова прочитал старое** и
  снова отказал: перезапуск проигрывает снимок события, а не живое тело. Выйти
  можно было только новым толчком (`CHANGELOG.md`, выпуск 1.1.0, «Починено»;
  комментарий к шагу в [`ci.yml`](../../../.github/workflows/ci.yml)).
- **2–3 сентября** первая живая разморозка очереди перевзвела **ноль из двух**
  стоящих изменений — и завершилась **зелёной**. Вторая перевзвела ноль из
  одного и покраснела; причина у обеих одна — HTTP 403. Мера отчиталась
  успехом, а эффекта не было (`CHANGELOG.md`, выпуск 1.2.0, «Починено»).
- **3 сентября** две равносильные меры отменили друг друга: прогон взвода
  автомержа для #316 был отменён через **тринадцать секунд** запуском от
  разморозки, и изменение стояло до ручного толчка (там же).
- **2 сентября** работа `attribution-history` стояла у дежурного в
  исключениях. Мера «исключить» ослабила заморозку молча: дежурный отчитался
  «ветка зелёная», и **два** изменения уехали на сломанном основании
  ([`AGENTS.md`](../../../AGENTS.md) § «Открытая работа», пункт 0).

## Что сделать

**0. Мера — после разбора.** Утверждение, на котором она стоит, проверено до
неё: «CI сломался», «событие не пришло» сначала воспроизводятся
([044](../../../rules/ru/044-check-the-premise-before-fixing.md)). Разбора нет —
сначала `/incident-triage`.

**1. Выбрать меру по причине, а не по привычке.** Каталог знает такие рычаги —
и только их:

| Причина, названная разбором | Мера | Чем НЕ заменять | Правило |
|---|---|---|---|
| упала одна работа, причина вне кода — выкачка, установка, потеря исполнителя | перезапуск **только упавшей работы**, одна попытка; зелёное со второго раза записывается фрагментом журнала как находка | перезапуском всего прогона и вторым перезапуском того же места | [124](../../../rules/ru/124-rerun-the-minimum-and-record-the-flake.md) |
| гейт читает снимок события, запись изменения устарела | новый толчок либо обновление ветки от базы | перезапуском: он проигрывает тот же снимок | [148](../../../rules/ru/148-a-change-record-is-a-cache.md) |
| событийная автоматика не проснулась | ручная кнопка `workflow_dispatch` | пустым коммитом ради перезапуска — он остаётся в истории навсегда | [104](../../../rules/ru/104-event-driven-automation-needs-a-manual-button.md) |
| красная `main`, очередь заморожена | метка `blocker` на изменении-починке, затем `automerge.yml` вручную с `pr=NNN`; путь выхода не должен проходить через замороженное действие | исключением работы из заморозки | [053](../../../rules/ru/053-queue-order-is-a-rule-not-arrival.md), [126](../../../rules/ru/126-a-freeze-needs-a-thaw-path.md) |
| исчерпана квота API | остановиться: довести начатые цепочки, новых не начинать, сначала замерить остаток и время сброса (`scripts/ghcli.py`) | повторами: они отодвигают сброс | [058](../../../rules/ru/058-when-the-quota-is-out-stop.md), [017](../../../rules/ru/017-measure-quota-do-not-guess.md) |
| слитая ветка воскресла от толчка | новая ветка от свежей `main`, дубль закрыть; ветку удаляет тот, у кого есть право | толчком в воскресшую | [202](../../../rules/ru/202-a-merged-branch-is-recreated-by-any-push.md) |
| краснеет гейт, и чинится его признак | правка признака с ответом по соседним случаям — строка `Соседи:` во фрагменте | подъёмом бюджета гейта — исключений, пропусков, долга, — «чтобы позеленело» | [195](../../../rules/ru/195-a-narrowed-predicate-names-its-neighbour.md), [050](../../../rules/ru/050-limits-move-down-only.md) |
| красное на чужом изменении или ветке | сообщить владельцу, что сделать | толчком в чужую ветку | [012](../../../rules/ru/012-do-not-push-to-someone-elses-branch.md) |

Отдельного пути отката каталог не ведёт: откат — обычное изменение через
конвейер, с меткой `blocker`, если он чинит красную `main`. Флагов, ограничения
частоты, режима деградации и масштабирования в каталоге нет, и мер на них навык
не предлагает.

**2. Разделить меры на обратимые и необратимые.** Метка, перезапуск, ручная
кнопка, новая ветка — обратимы: у каждой назван способ вернуть. Слияние, тег,
выпуск, удаление ветки или метки — **необратимы**: допустимы только с
инвариантами, проверенными заранее скриптом, а не глазами в момент шага
([074](../../../rules/ru/074-one-shot-irreversible-steps-get-their-own-guard.md)).
Из облачного окна операция, несущая личность человека, не выполняется вовсе —
она уходит в конвейер ([131](../../../rules/ru/131-no-writes-from-a-cloud-session.md)).
Мера над **чужой** работой — закрыть, убрать, переписать — берётся, только
если выполнены все её условия сразу; иначе позвать владельца
([063](../../../rules/ru/063-automatic-intervention-needs-all-conditions.md)).

**3. Ослабление — только явное.** Мера, снимающая гарантию — исключение из
заморозки, обход гейта, — допустима лишь отдельным решением с записью, что
режим ослаблен. Тихое исключение 2 сентября и есть то, что запрещено
([045](../../../rules/ru/045-no-silent-fallback.md)).

**4. Назвать проверку эффекта ДО выполнения.** Мера на площадке подтверждается
номером живого исхода — какой прогон, какое изменение, сколько перевзведено, —
а не успехом команды ([139](../../../rules/ru/139-a-mechanism-is-confirmed-by-a-run.md)).
Для меры, срабатывающей по условию — метка, приставка ветки, условие запуска, —
проверяется появление ожидаемого артефакта: несовпадение условия молчит
([147](../../../rules/ru/147-a-cancelling-switch-needs-an-addressee.md)).
«Разморозка зелёная» без числа перевзведённых — не эффект, а тот самый
инцидент 2 сентября.

**5. Не запускать две меры одного предмета разом.** Равносильные меры в одной
группе конкурентности отменяют друг друга — 3 сентября одна съела другую за
тринадцать секунд. Одна мера, её исход, потом следующая.

## Что выдать

Для каждой предложенной меры:

1. **Мера** и причина из разбора, на которую она отвечает.
2. **Обратима или нет** — и как вернуть, если обратима.
3. **Кто выполняет** — окно, конвейер или человек; что из этого окну не разрешено.
4. **Проверка эффекта** — какое число или номер покажет, что мера сработала.
5. **Чего не делать вместо неё** — строка из таблицы шага 1.

## Чего навык НЕ делает

- **Не краснеет.** Он ничего не отвергает и не останавливает: это суждение
  модели по описанию. Машинную часть там, где она построена, держат гейты и
  конвейер — [`AGENTS.md`](../../../AGENTS.md) § «Гейты».
- **Не разбирает инцидент.** Что красное и почему — вопрос
  [`/incident-triage`](../incident-triage/SKILL.md); здесь причина уже названа.
- **Не выполняет необратимое и не ставит `blocker` сам.** Метку ставит
  человек: что именно чинит красное, механизм не выводит
  ([053](../../../rules/ru/053-queue-order-is-a-rule-not-arrival.md)). Навык её
  предлагает, с проверкой эффекта.
- **Не объявляет починку.** Уборка после меры — снятая метка, закрытый дубль —
  не значит, что причина устранена.
- **Не изобретает рычагов эксплуатации.** Их в каталоге нет.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.