ORCH-110: merge-gate re-test infra-timeout tolerance + tree-kill + re-test contract #132
Reference in New Issue
Block a user
Delete Branch "feature/ORCH-110-bug-merge-gate-local-re-test-t"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
ORCH-110 — merge-gate re-test infra-timeout: устранение ложного отката + утечки процессов
Багфикс инцидента ORCH-109 / PR #129 (bug → escalate full-cycle). Локальный re-test merge-gate (
check_branch_mergeable, реброdeploy-staging → deploy) падал по таймауту (516.7s-сюит упёрся в бюджет 600s под CPU-голоданием от осиротевших pytest-процессов) при зелёных CI + tester + staging → маршрутизировался как код-фейл → откат наdevelopment+ расход developer-retry → каждый retry падал так же → «Merge-gate still failing after 3 developer retries» → ручное вмешательство.Аддитивно, под 5 независимыми kill-switch, never-raise, скоуп self-hosting. Не тронуты байт-в-байт:
STAGE_TRANSITIONS, реестрQG_CHECKS, имя/семантикаcheck_branch_mergeable, machine-verdict-ключи, схема БД. INV-4 (никогда push/force-pushmain) и запрет рестарта прод-контейнера — соблюдены.Что сделано (по ADR)
src/proc_group.pyспавнит re-test/coverage pytest в отдельной группе процессов (start_new_session) и при таймауте убивает всё дерево (os.killpg, каскад SIGTERM→grace→SIGKILL). Используютmerge_gate.retest_branchиcoverage_gate.measure_coverage. Fallback never-break:subprocess_tree_kill_enabled=False/не-POSIX → прежнийsubprocess.run.classify_retest_failureразличаетtimeout/red/lock-busy/other; инфра-таймаут →_handle_merge_gate_infra_retry(ограниченный повтор, задача остаётся наdeploy-staging, без отката/developer-retry); красный re-test/конфликт → прежний rollback (BR-6). Исчерпание → один инфра-alert.merge_retest_timeout_s600 → 900 + валидация; инвариантreaper_max_running_sсоблюдён без правки.merge_gateвGET /queue; regression-guard marker; координация с ORCH-111 без дубля.Тесты
tests/test_orch110_*.py— TC-01…TC-12 (включая регресс инцидента red-before/green-after). Полный регресс: 1988 passed.Документация (в том же PR)
docs/architecture/README.md,docs/overview/tech-pipeline.md,CLAUDE.md,CHANGELOG.md,.env.exampleобновлены.ADR:
docs/work-items/ORCH-110/06-adr/ADR-001-merge-gate-retest-infra-tolerance-and-tree-kill.md, сквознойdocs/architecture/adr/adr-0042-merge-gate-retest-infra-tolerance-and-tree-kill.md.🤖 Generated with Claude Code
ba20455414to04d5671e1b