Files
orchestrator/docs/work-items/ORCH-063/10-tech-risks.md

4.9 KiB
Raw Permalink Blame History

work_item, stage, author_agent, status, created_at, model_used
work_item stage author_agent status created_at model_used
ORCH-063 architecture architect proposed 2026-06-09 claude-opus-4-8

10 — Технические риски: ORCH-063 — мониторинг диска mva154 + алерт при ≥85%

Work Item: ORCH-063 · Repo: orchestrator · Стадия: architecture

Информационный (гейтом не парсится). Риски реализации и их митигейшн.

Реестр рисков

ID Риск Вер. Влия. Митигейшн
TR-1 Замер по неверной ФС (overlay / контейнера вместо host-раздела) → ложно-низкое заполнение → watchdog молчит при реально полном хосте (повтор 07.06). Сред. Выс. ADR D1: замер shutil.disk_usage по bind-mount-путям /repos//app/data (host-разделы); / запрещён как источник (NFR-3/AC-8). Тест AC-8.
TR-2 Спам-алерты на каждом тике при длительном превышении → шум, оператор глохнет. Сред. Сред. ADR D3: pure decide_action — алерт на пересечении + cooldown disk_monitor_realert_s (~6 ч); юнит-тест AC-3.
TR-3 Залипший cooldown — после спада ниже порога состояние не сброшено → новое превышение молчит. Низ. Сред. ADR D3: переход «выше→ниже» сбрасывает alerting + однократный recovery; цикл повторяем. Тест AC-4.
TR-4 Исключение в тике/отправке роняет поток или конвейер. Низ. Выс. ADR D8: never-raise на 3 уровнях (per-path, per-tick, per-send), как reconciler/reaper. Тест AC-6 (битый путь / падение send_telegram).
TR-5 Порог 85% близок к 100% при быстром росте (один большой build/worktree) → оператор не успевает. Низ. Сред. Дефолт зафиксирован Владельцем; конфигурируем (BR-5). Второй «критический» порог (95%) — кандидат follow-up (OQ-4, вне объёма).
TR-6 Исчерпание inode (не байтов) валит ФС, но не ловится замером по %-байтам. Низ. Сред. Вне объёма ORCH-063 (BRD §8 R-4); кандидат на расширение замера (os.statvfs f_files/f_favail). Задокументировать как known-limitation.
TR-7 Потеря анти-спам-состояния при рестарте (in-memory) → повторный алерт при всё ещё полном диске. Сред. Низ. Осознанный компромисс (ADR D3, NFR-5): повторный ранний сигнал безопасен; durable-хранение отвергнуто (лишняя миграция).
TR-8 Best-effort Telegram — алерт не доставлен при сбое сети. Низ. Сред. Та же send_telegram (never-raise); cooldown-повтор повышает шанс доставки. Watchdog — ранний сигнал, не SLA (BRD §6).
TR-9 Дедуп по st_dev ошибочно схлопнет разные разделы или os.stat упадёт. Низ. Низ. ADR D2: ключ дедупа — фактический st_dev; ошибка os.stat → fail-open (путь как отдельный, замер не теряется).

Сводный вывод

Доминирующий класс — риски ложного молчания/шума (TR-1, TR-2, TR-3), полностью закрытые конструктивно: корректный источник замера (host-ФС) + pure-функция анти-спама с юнит-покрытием. Изоляция от конвейера обеспечена never-raise-каркасом проверенных reconciler/reaper. Эскалация arch:major-change не требуется: изменение аддитивное, под kill-switch, без правки STAGE_TRANSITIONS/QG_CHECKS/схемы БД, тривиально откатывается. Возврат в анализ не требуетсяТЗ реализуемо без нарушения принципов. Остаточный риск для прод-конвейера (self-hosting) — низкий: watchdog только читает и уведомляет, не трогает прод. TR-6 (inode) — осознанная known-limitation вне объёма.