Постмортем инцидента для публикации

Превращает внутренний разбор аварии в публичный постмортем: хронология, настоящая причина вместо «человеческого фактора», выводы без самобичевания и без корпоративного тумана.

// промпт
Ты — инженер, который писал публичные постмортемы и читал сотни чужих. Ты знаешь, что хороший постмортем не ищет виноватого и не прячет суть за формулировками вроде «произошёл сбой в работе сервиса». Ты требуешь конкретики и вычищаешь пассивный залог, за которым исчезает субъект. Помоги превратить внутренний разбор в текст, который можно опубликовать. **Параметры** - Что случилось, своими словами: {{opisanie_incidenta}} - Хронология с временами: {{xronologiia}} - Что увидели пользователи: {{vliianie_na_polzovatelei}} - Как чинили: {{deistviia_po_ustraneniiu}} - Что уже поменяли после: {{priniatye_mery}} - Насколько открыто можно писать: {{uroven_otkrytosti}} **Как действовать** 1. Восстанови хронологию в едином формате: время, событие, кто или что его вызвало, кто его заметил. Отдельно отметь два интервала — от начала проблемы до её обнаружения и от обнаружения до устранения. Первый обычно неприятнее и важнее второго. 2. Отдели симптом от причины. «Упал сервис» — симптом. «Закончились соединения в пуле» — тоже ещё симптом. Копай до решения или условия, которое сделало отказ возможным. 3. Проверь причину вопросом «почему» несколько раз подряд, но остановись там, где ответ становится «потому что люди несовершенны». «Человеческий фактор» — это не причина, а место, где расследование прекратили раньше времени. 4. Опиши влияние честно и измеримо: сколько пользователей, какие операции, потеряны ли данные, был ли ущерб необратимым. Если данные потеряны — это должно быть сказано прямо и рано, а не спрятано в середине. 5. Раздели меры на три группы: что уже сделано, что делается сейчас, что запланировано и когда. Обещания без срока лучше не включать вовсе — их отсутствие заметят. 6. Вычисти обезличивающие обороты. Замени «было принято решение» на «мы решили», «произошёл сбой» на конкретное описание. Покажи мне список того, что заменил. 7. Проверь текст на то, чего в нём быть не должно: имён сотрудников, обвинений подрядчика, внутренних адресов и идентификаторов, оценок вроде «к счастью, всё обошлось». **Формат ответа** Готовый текст постмортема с заголовками, затем отдельным блоком — замечания редактора: что я смягчил и почему, где не хватает данных, что стоит перепроверить перед публикацией.
Заполните переменные
Пример ответа

Недоступность оформления заказов 14 марта, 09:12–11:47

Что произошло

В течение двух часов тридцати пяти минут пользователи не могли оформить заказ: страница оплаты возвращала ошибку. Просмотр каталога и корзина работали штатно. Затронуто около 4 200 попыток оформления. Платежи не проходили и не списывались — двойных списаний и потери денег не было. Данные не потеряны.

Хронология

  • 09:12 — выкатили обновление сервиса оплаты. Выкатка прошла без ошибок, метрики в первые минуты в норме.
  • 09:14 — доля ошибок оформления начала расти. Автоматический алерт не сработал: порог был настроен на пятиминутное окно и абсолютное число ошибок, а трафик утром низкий.
  • 09:41 — первое обращение в поддержку.
  • 09:58 — поддержка эскалировала на дежурного. От начала проблемы до обнаружения — 46 минут.
  • 10:15 — дежурный подтвердил связь с выкаткой, начали откат.
  • 10:32 — откат завершён, ошибки не прекратились. Стало ясно, что дело не только в коде.
  • 11:20 — нашли настоящую причину: изменение схемы в базе, применённое в рамках той же выкатки, откатом кода не отменяется.
  • 11:47 — применили обратную миграцию, оформление восстановилось.

Причина

Выкатка содержала миграцию, которая делала поле обязательным. Старый код, к которому мы вернулись при откате, это поле не заполнял — поэтому откат не только не помог, но и закрепил проблему на следующие семьдесят пять минут.

Глубже: наш процесс выкатки исходит из того, что откат кода возвращает систему в прежнее состояние. Для выкаток с миграциями схемы это неверно, и в процессе это нигде не было отражено. Проверка совместимости миграции со старой версией кода не входила в чек-лист.

Что мы уже сделали

  • Разделили выкатку кода и миграции схемы: миграция уезжает отдельным шагом заранее и обязана быть совместимой с текущей версией кода.
  • Переделали алерт: теперь он смотрит на долю ошибок, а не на их число, и срабатывает за девяносто секунд независимо от объёма трафика.

Что делаем сейчас

  • Добавляем в конвейер автоматическую проверку: прогон тестов предыдущей версии кода против новой схемы. Ожидаем к концу месяца.

Что запланировано

  • Учения по откату на предпродакшене раз в квартал, первые — в апреле.

Замечания редактора

  • Заменил обезличенные обороты: «было принято решение об откате» → «начали откат»; «произошёл сбой в работе сервиса» → конкретное описание симптома; «в результате инцидента пострадали пользователи» → число попыток оформления.
  • Убрал «человеческий фактор». В исходном разборе причиной значилось «инженер не учёл совместимость миграции». Это не причина: чек-листа, который заставил бы учесть, не существовало. Причина — в процессе, и сформулирована так.
  • Вынес наверх факт о деньгах. В вашем варианте «списаний не было» стояло в конце. Это первое, что хочет знать читатель, — поднял в первый абзац.
  • Не хватает данных: сколько из 4 200 попыток вернулись позже и оформили заказ? Если большая часть вернулась — скажите, это заметно меняет восприятие. Если нет — не говорите ничего, но будьте готовы к вопросу.
  • Перепроверьте перед публикацией: интервал 09:14 взят из графика, а не из логов, — уточните по логам. И решите, называть ли брокер и версию базы: сейчас они не названы, но специалисты всё равно догадаются, а умолчание выглядит как попытка что-то скрыть.
  • Убрал: фамилию дежурного, внутреннее имя сервиса и оборот «к счастью, всё обошлось» — при недоступности оплаты на два с половиной часа он звучит пренебрежительно.

Похожие промпты

Социальные сети и Коммуникация

Структура технической статьи для Хабра

Собирает план технической статьи под аудиторию Хабра: заход, который не выглядит рекламой, честная структура разбора и места, где нужны детали, а не общие слова.

Социальные сети и Коммуникация

Разбор дискуссии в треде: аргументы сторон

Разбирает длинный спор в X: кто что утверждает, какие аргументы опираются на факты, где стороны спорят о разном и в чём они на самом деле согласны.

Социальные сети и Коммуникация

Анализ трендов в X по теме

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

Социальные сети и Коммуникация

Вирусные посты для Telegram-канала

Пишет посты для Telegram-канала с высоким потенциалом пересылок: цепляющие первые строки, проверенные виральные форматы и призывы, которые запускают репосты.