4.3 KiB
4.3 KiB
work_item, stage, author_agent, status, created_at, model_used
| work_item | stage | author_agent | status | created_at | model_used |
|---|---|---|---|---|---|
| ORCH-027 | architecture | architect | proposed | 2026-06-10 | claude-opus-4-8 |
07 — Инфраструктурные требования: ORCH-027 — Code coverage как гейт
Work Item: ORCH-027 · Repo: orchestrator · Стадия: architecture
When-applicable. Топология не меняется (всё в существующем Docker-контейнере на одном сервере mva154, SQLite, собственная очередь). Затрагивается только зависимостный и конфигурационный слой.
Топология / окружение
- Без изменений топологии — никаких новых контейнеров/сервисов/нод. Гейт исполняется внутри
существующего процесса оркестратора, измерение — в per-branch worktree (
ensure_worktree), как merge-gate re-test.docs/operations/INFRA.md— без правок. - Self-hosting безопасность (NFR-3): гейт не вызывает деплой-хук, не рестартит прод-контейнер
orchestrator(8500), не пушит вmain. Прод-деплой ORCH-027 — только через staging-гейт (8501) → выделенный статус «Confirm Deploy» (ORCH-059), без рестарта прод случайным approve.
Зависимости
| Зависимость | Где | Назначение |
|---|---|---|
pytest-cov (обёртка coverage.py) |
requirements.txt |
измерение line coverage прогоном pytest --cov=src --cov-report=json. Offline (сеть при измерении не нужна). Попадает в прод-образ при пересборке. |
- Версия фиксируется совместимой с текущим
pytest(см.requirements.txt/pytest.ini). - Новых системных пакетов в
Dockerfileне требуется (чистый pip-пакет).
Конфигурация (env, .env на хосте)
Новые флаги (config.py, префикс ORCH_COVERAGE_*; дефолты безопасны — нулевая регрессия):
| Env | Дефолт | Назначение |
|---|---|---|
ORCH_COVERAGE_GATE_ENABLED |
false (раскат поэтапный) |
kill-switch |
ORCH_COVERAGE_GATE_REPOS |
пусто → только self-hosting | CSV область применения |
ORCH_COVERAGE_MIN_PERCENT |
консервативно (напр. backstop) | абсолютный порог-floor |
ORCH_COVERAGE_POLICY |
both |
absolute|baseline|both |
ORCH_COVERAGE_EPSILON |
малый (напр. 0.5) |
допуск на шум измерения |
ORCH_COVERAGE_TOOL_FAIL_CLOSED |
false |
поведение при сбое инструмента |
ORCH_COVERAGE_RUN_TIMEOUT_S |
по образцу merge_retest_timeout_s |
тайм-аут прогона |
Эксплуатационные предусловия
- Bootstrap базовой линии: при первом merge применимого репо базовая линия
mainзасевается автоматически фактическим измеренным покрытием (D5). Ручной первичный замер не обязателен; при необходимости —POST /coverage/baseline?repo=orchestrator&value=<%>(D8). - Раскат: включать
ORCH_COVERAGE_GATE_ENABLED=trueтолько после прод-деплоя кода и прогона на staging (8501); стартовая область — толькоorchestrator. - Override (легитимное снижение покрытия):
POST /coverage/baseline(по образцуPOST /serial-gate/unfreeze) либо временныйORCH_COVERAGE_POLICY=absolute.
Секреты / сеть
- Новых секретов нет. Сетевого доступа при измерении нет (coverage offline).
- enduro-trails и прочие репозитории — вне области по умолчанию, нулевое влияние.