5.7 KiB
5.7 KiB
work_item, stage, author_agent, status, created_at, model_used
| work_item | stage | author_agent | status | created_at | model_used |
|---|---|---|---|---|---|
| ORCH-112 | architecture | architect | proposed | 2026-06-15 | claude-opus-4-8 |
10 — Технические риски: ORCH-112 — гигиена shared deploy-базы
Work Item: ORCH-112 · Repo: orchestrator · Стадия: architecture
Информационный (гейтом не парсится). Риски реализации resilient-pull и их митигейшн.
Реестр рисков
| ID | Риск | Вер. | Влия. | Митигейшн |
|---|---|---|---|---|
| TR-1 | git clean -x ошибочно добавлен → удалит gitignored .env (прод-секреты) / data/*.db (БД прода) / build/ — катастрофа на прод-deploy-базе |
Низ. | Выс. | INV-HYGIENE-1 (ADR D2): только git clean -fd, никогда -x. Статический анти-регресс-тест ассертит отсутствие -x в hygiene-блоке хука (TC-05/TC-09); явная рамка в ADR + INFRA |
| TR-2 | Неверный/отсутствующий -e exclude → git clean -fd удалит .deploy-prev-image-* → сломан rollback (do_rollback) |
Сред. | Выс. | INV-HYGIENE-2: обязательные -e '.deploy-prev-image-*' + -e 'deploy-hook.log'; TC-03 доказывает неудаление и работоспособность rollback; шаг 1 хука пишет prev-image до hygiene |
| TR-3 | Сбой шага hygiene (fetch/reset/clean) маскирует/ухудшает исход деплоя | Низ. | Сред. | never-break (ADR D1): каждая git-операция || log "...continuing"; деплой продолжается к голому git pull; sentinel-отчёт фиксирует факт; fail-safe, исход не хуже текущего |
| TR-4 | reset --hard origin/main безвозвратно дискардит локальные правки deploy-базы, которые кто-то «нужными» считал |
Низ. | Сред. | Это ровно инвариант: deploy-база = origin/main (источник истины — remote); deploy лишь fast-forward'ит. Наблюдаемость (D5) показывает сброшенное; скоуп — self-hosting; документировано (INFRA/README) |
| TR-5 | Гонка: hygiene на хосте чистит mount, пока контейнер читает deploy-базу | Низ. | Низ. | Деплой сериализован (serial-gate ORCH-088, один деплой за раз); hygiene в detached-хуке непосредственно перед pull; нормальный конвейер deploy-базу не читает в этот момент (worktree-изоляция). TOCTOU между status и reset пренебрежимо (один процесс) |
| TR-6 | Скоуп-leak: hygiene затронет прочие репо / синхронный деплой агентом | Низ. | Сред. | applies(repo) (локально, первым): пусто → self-hosting only; инжекция env только на self-deploy-пути (сам self-hosting-скоупленный, self_deploy_applies); TC-06 |
| TR-7 | Стейл origin/main (fetch не выполнился) → reset --hard сходится к устаревшему коммиту |
Низ. | Низ. | git fetch origin main перед reset; при сбое fetch — || log + продолжение; последующий git pull origin main (строка 226, не тронута) до-тянет недостающее; deploy промоутит build-once SOURCE_IMAGE (артефакт не зависит от дерева main clone) |
| TR-8 | Расширение объёма (касание cancel_task/STAGE_TRANSITIONS/QG) при реализации |
Низ. | Сред. | ADR D4 явно запрещает расширение cancel_task; NFR-5 байт-в-байт; TC-09 структурно ассертит неизменность контрактов; трассировка ORCH-036/058/090 |
Сводный вывод
Доминирующий класс — деструктивная гигиена рядом с прод-rollback-состоянием (TR-1/TR-2): низкая
вероятность, высокое влияние, полностью снимается контрактом сохранности (INV-HYGIENE-1/2) + явными
тестами (TC-03/TC-05/TC-09). Изменение аддитивно, под kill-switch (checkout_hygiene_enabled, дефолт
True; off → байт-в-байт до ORCH-112), never-raise, self-hosting-скоупленное, не трогает
STAGE_TRANSITIONS/QG_CHECKS/check_*/machine-verdict/схему БД/exit-code-контракт хука.
Эскалация: вводится новый leaf-компонент (src/checkout_hygiene.py) на глобальном пути прод-деплоя
- правка прод-deploy-хука + сквозной ADR adr-0044 → рекомендуется лейбл
arch:major-changeдля reviewer-внимания (изменение safety-critical, в прод-deploy-пути). Возврат в анализ не требуется: ТЗ удовлетворяется без нарушения принципов архитектуры (всё в Docker на одном сервере, без новых зависимостей/очередей/k8s, без рестарта прода вне staging-гейта). Остаточный риск для прод-конвейера — низкий при соблюдении INV-HYGIENE-1/2/3.