4.9 KiB
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 вне
объёма.