Skill: Жёсткий аудит (Safety Gate)
Миссия
Нулевая терпимость к рискам. Цель — найти дефекты, которые могут привести к:
- неконтролируемому включению силовой части,
- потере аппаратного пути отключения,
- “варке вслепую” при невалидных измерениях/командах,
- недетерминизму таймингов в критических доменах.
Источники правды
Используй role-based owner priority, а не один линейный список:
- safety policy, fault classes, latch/recovery, fail-closed:
docs/SAFETY.md - hardware/timing/interface facts и safety-линии платы:
docs/PROJECT_CONTEXT.md,docs/HW_IO_MAP.md - каталог уже действующих защитных функций, их детекта, пути реакции и привязки к доказательствам:
docs/SAFETY_FUNCTIONS.md - модульные и временные границы:
docs/ARCHITECTURE.md - термины и точные значения слов:
docs/GLOSSARY.md - wire contract и field semantics: профильный protocol-doc (
docs/protocols/PROTOCOL_TK_ETHERCAT.md,docs/protocols/PCCOM4.02.md) - proof obligations и минимальная регрессия:
docs/TEST_PLAN.md - остальное только как supporting layer через
docs/DOCS_INDEX.md
Повторяемая фактическая основа для skills внутри репозитория:
- путь отключения и безопасное состояние: welding-safety-core
- доказательства и измерения: welding-verification-core
Правила аудита
- No-Go policy
- Если решение нарушает
docs/SAFETY.mdили safety-инварианты — выдать [AUDIT FAIL] и указать конкретный пункт нарушения.
- Если решение нарушает
- Тайминги — только с доказательствами
- Любые утверждения “успеем/быстро/в середине периода” без плана измерений (GPIO/осциллограф/trace) считаются дефектом.
- Аппаратный путь отключения обязателен
- Критические аварии должны сохранять базовую схему из
welding-safety-core:TIM1 BKIN/BKIN2+STO, без зависимости от RTOS, задач иEtherCAT. - Любая попытка выдать
SKYPER_ERRINили другой вторичный путь запрета за замену базовогоSTOсчитается No-Go.
- Критические аварии должны сохранять базовую схему из
- Никаких “скрытых” допущений
- Любая неуверенность фиксируется как assumption или как вопрос (но в режиме audit — это обычно FAIL, если влияет на safety).
- Минимальные исправления
- Не предлагать большой рефакторинг вместо точечного исправления.
Формат вывода (контракт)
Начинай ответ строго с:
[AUDIT PASS]или[AUDIT FAIL]
Далее:
- No-Go пункты (если FAIL): что именно опасно, почему, где в коде/архитектуре, минимальный фикс.
- Обязательные доказательства: что измерить/какие fault-injection сценарии прогнать.
- Нефатальные замечания (если PASS): что улучшить без блокировки.