agentleFS
VibeEngineering-LLCVibeEngineering-LLC/agent-ops-doctrine/skills/incident-log/SKILL.md

incident-log

Skill1 starsChanged 58 days agoMITView on GitHub

Фиксация инцидентов и мер: два РАЗДЕЛЬНЫХ журнала — РАБОЧИЕ (процессные провалы агента) и ПРОЕКТНЫЕ (баги продукта). Триггеры: «запиши инцидент», «прими меры, чтобы не повторилось», а также МОЛЧА — сразу после того, как что-то сломалось и починено. Не хендофф (session-handoff), не аудит (six-corner-audit).

1 other project uses a version of this.

Adopted by

Most recently taken up by

The file

Files
SKILL.md

incident-log — фиксировать инциденты и учиться на них

Инцидент, о котором не сделана запись, повторяется. Инцидент, записанный без разбора причины и без меры, повторяется тоже — запись превращается в мемориал вместо защиты.

Скилл задаёт: что считать инцидентом, куда писать (два раздельных журнала), какие поля обязательны, и главное — как превратить запись в меру, которая не даст повториться.

Два класса — разделять физически, не полем в одном файле

РАБОЧИЙ (work-incidents.md)ПРОЕКТНЫЙ (project-incidents.md)
Что этоСбой МОЕЙ работы как агентаДефект ПРОДУКТА
ПримерыПоверил exit-коду, не проверил результат; не делегировал машинерию; сорвал §-правило; false-green субагента; отчитался «готово» непровереннымБаг прошивки; неверный расчёт; сломанный парсер; протухший конфиг; регрессия после правки
Где лежит<папка контура>\audit\work-incidents.md<папка проекта>\audit\project-incidents.md
Кто адресат мерыДоктрина: CLAUDE.md / references/* / хук / гейтКод: правка + тест
СудьбаОстаётся у агента; урок уровня доктрины поднимается ВСЕМ контурамУезжает вместе с проектом (публикация, передача, архив)
НомерW-NNNP-NNN

Почему физически раздельно, а не полем Class:. Проект передаётся, публикуется, архивируется — и утаскивает с собой всё, что лежит в его папке. Мои процессные провалы наружу не идут: они про меня, не про продукт. Обратно: рабочий урок «stdin форсировать симметрично stdout» касается ВСЕХ контуров, а не одного проекта, — в проектном журнале он бы там и умер.

Пограничный случай: сбой продукта, вызванный моей же процессной ошибкой (написал код, не проверил, выкатил) — две записи: P-NNN про дефект кода и W-NNN про то, почему он ушёл непроверенным. Мера у них разная: одна правит код, вторая — гейт.

Что считать инцидентом (порог)

Инцидент — если выполнено любое:

  1. Что-то сломалось молча (успешный код возврата / отсутствие ошибки при нулевом результате).
  2. Пришлось переделывать уже объявленное готовым.
  3. Оператор поправил меня по существу — фактом, а не стилистикой.
  4. Правило нарушено (§-правило доктрины, IRON MODE, граница зон §12).
  5. Сбой инфраструктуры с потерей работы (краш Ollama, потеря watcher, OOM, CI red).
  6. Расхождение заявленного и фактического (отчитался N, по факту M).

НЕ инцидент: обычная итерация по задаче, отладка в процессе разработки до объявления результата, правка по вкусу оператора, найденный и сразу исправленный дефект внутри своего же рабочего прохода (если он не ушёл наружу и ничего не сорвал).

Когда писать — молча, не дожидаясь команды

Запись делается сразу после починки, в том же ходе, до доклада оператору. Не «потом», не «накоплю и запишу» — отложенная запись теряет verbatim ошибки и точную причину.

Команда оператора («запиши инцидент», «прими меры») — не единственный триггер, а подтверждение того, что и так обязано было произойти.

Обязательные поля записи

Полный шаблон с плейсхолдерами — references/template.md. Минимум, без которого запись не годна:

  1. Номер и однострочный заголовок — W-007 — Silent-fail: …. Заголовок читается отдельно от тела и уже сообщает суть.
  2. Дата / контур / проект.
  3. Класс и подкласс (см. таблицу выше + список подклассов в references/taxonomy.md).
  4. Симптом ВНЕШНИЙ — что было видно до разбора. Именно он потом опознаётся в будущем.
  5. Error verbatim — точный текст ошибки/расхождения, не пересказ. Нет текста — так и писать «текста ошибки не было, симптом молчаливый» (это само по себе диагноз).
  6. Root cause — почему, а не что. «Скрипт упал» — не причина. «stdin не форсирован на UTF-8, кириллица стала суррогатами» — причина.
  7. Как пойман — чем именно обнаружен. Отдельное поле, потому что «поймано случайно» и «поймано штатной проверкой» требуют разных мер: первое означает дыру в контроле.
  8. Корректирующая мера — конкретная, проверяемая, с указанием файла. «Быть внимательнее» — не мера. Мера = правило + место, где оно записано, + (по возможности) механическое подкрепление.
  9. Проверка меры — чем подтверждено, что мера работает. Прогон, тест, чтение файла.
  10. Сканирование класса — проверил ли я ОСТАЛЬНЫЕ места с тем же дефектом. Обязательное поле: дефект такого класса редко бывает одиночным.
  11. Owner / status — OPEN / CLOSED-fixed / CLOSED-analyzed / WONTFIX + причина.

Лестница мер — от слабой к сильной

Мера «запомнить» не работает. Выбирать САМУЮ СИЛЬНУЮ из доступных:

СилаМераКогда
СлабаяЗапись в журналвсегда, это база, но сама по себе не защищает
СредняяПравило в CLAUDE.md / references/* / SKILL.mdурок формулируется словами и применим впредь
СильнаяХук / гейт / скрипт-проверканарушение можно обнаружить механически
МаксимальнаяУстранение самой возможностипереписать так, чтобы ошибка стала невозможной

Написал только запись в журнал — спросить себя: почему нельзя подняться на ступень выше? Ответ «лень» не принимается; ответ «механически не детектируется» — принимается и записывается в поле меры.

Разбор: превратить инцидент в урок

После записи — три вопроса, ответы идут в саму запись:

  1. Это одиночный дефект или класс? Если класс — просканировать все аналогичные места (поле «Сканирование класса»). Пример: после починки одного хука нашлось ещё пять с тем же багом.
  2. Почему не поймалось раньше? Дыра в контроле важнее самого дефекта: дефект чинится один раз, дыра пропустит следующий.
  3. Кому ещё это касается? Урок уровня доктрины (не проектный) — поднять в глобальный CLAUDE.md/references и, если контуров это касается прямо, написать промпты владельцам зон (§12: сам в чужую зону не хожу).

Периодический разбор паттернов

Раз в ~10 записей журнала — секция «Сводный анализ» в конце файла: какие классы повторяются, какая системная причина за ними. Три записи одного класса — сигнал, что мера была слишком слабой; поднять на ступень выше по лестнице мер.

Границы с соседними скиллами

  • six-corner-audit — независимый аудит готового артефакта (найти дефекты). Здесь — что делать ПОСЛЕ того, как дефект найден и починен.
  • session-handoff — состояние для продолжения работы. Инцидент в хендофф не пишется, пишется ссылка на журнал.
  • §31 IRON MODE — как не допустить (самоаудит стерильными проходами). Здесь — что делать, когда всё-таки допустил. IRON MODE предотвращает, incident-log учит.
  • §4 (краш Ollama) — частный случай: отчёт в СВОЙ журнал и оператору ОБЯЗАТЕЛЕН и не заменяет запись сюда. ⚠ Слово «супервайзер» снято 30.08 как реликт отменённой пошаговой отчётности контуров: надзорному контуру идёт только эскалация «не справляюсь», не рутинный отчёт.

Anti-patterns

  • ❌ Записать «сломалось, починил» без root cause — запись бесполезна, повторится.
  • ❌ Мера «быть внимательнее» / «учту» — не мера, ничего не меняет.
  • ❌ Починить один файл, не проверив класс — самый частый способ оставить мину.
  • ❌ Отложить запись «на потом» — verbatim ошибки теряется в тот же ход.
  • ❌ Смешать рабочие и проектные в одном файле — уедут вместе с проектом либо урок не разойдётся.
  • ❌ Журнал как changelog («переименовал файлы, обновил индекс») — сюда только сбои.
  • ❌ Записать инцидент и не подняться по лестнице мер там, где хук был возможен.

История

Создан 2026-08-15 по требованию оператора оператора: «есть у всех жёсткое правило фиксации инцидентов и обучения на них? Инциденты нужно разделять на рабочие (при собственной работе агента) и проектные (баги продукта)». Проверка фактом показала: журнал был только у надзорного контура (audit/failure-register.md, 6 записей), у остальных 9 контуров — ни одного; разделения на рабочие/проектные не было нигде, в самом реестре надзорного контура они были свалены вместе. Триггером стал инцидент FR-006 (silent-fail хука из-за не форсированного UTF-8 на stdin): рабочий урок был записан в журнал одного контура, хотя правило касается всех.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.