feat(qg): ORCH-045 — poll check_ci_green with retry to fix CI race #39

Merged
admin merged 1 commits from feature/ORCH-045-ci-poll-retry into main 2026-06-05 23:08:15 +03:00
Owner

ORCH-045 — poll check_ci_green with retry (fix CI race)

Устраняет race condition в quality-gate check_ci_green: раньше один опрос combined commit-status сразу после пуша developer-а ловил транзиентный pending (1-3с) и задача застревала насмерть без повторного опроса (реальный кейс ORCH-017: опрос 17:58:54 → pending, CI дозеленел 17:58:55).

Что сделано

  • src/qg/checks.py: single-shot → polling. success → пропуск сразу; failure/error → провал сразу (терминально); pending/unknown → time.sleep + повторный опрос до ci_poll_max_attempts; истечение → явный (False, "CI still pending after <T>s") (не молчаливый тупик); 404 как раньше; транзиентная httpx.HTTPError логируется и ретраится в бюджете. Сигнатура и реестр QG_CHECKS не менялись.
  • src/config.py: новые настройки ORCH_CI_POLL_MAX_ATTEMPTS (12), ORCH_CI_POLL_INTERVAL_S (10) — ~2 мин ожидания pending.
  • Тесты tests/test_qg.py::TestCheckCIGreen: success-1st / pending→success / failure-no-retry / pending-exhausts-attempts / 404 (time.sleep замокан). 62 passed в tests/test_qg.py.
  • ADR docs/architecture/adr/adr-0004-ci-poll-retry.md + индекс README + CHANGELOG.

check_tests_passed / _parse_tests_verdict (ORCH-47) НЕ тронуты. Мерж — на ревью оператору.

## ORCH-045 — poll check_ci_green with retry (fix CI race) Устраняет race condition в quality-gate `check_ci_green`: раньше один опрос combined commit-status сразу после пуша developer-а ловил транзиентный `pending` (1-3с) и задача застревала насмерть без повторного опроса (реальный кейс ORCH-017: опрос 17:58:54 → pending, CI дозеленел 17:58:55). ### Что сделано - `src/qg/checks.py`: single-shot → polling. `success` → пропуск сразу; `failure`/`error` → провал сразу (терминально); `pending`/unknown → `time.sleep` + повторный опрос до `ci_poll_max_attempts`; истечение → явный `(False, "CI still pending after <T>s")` (не молчаливый тупик); 404 как раньше; транзиентная `httpx.HTTPError` логируется и ретраится в бюджете. Сигнатура и реестр `QG_CHECKS` не менялись. - `src/config.py`: новые настройки `ORCH_CI_POLL_MAX_ATTEMPTS` (12), `ORCH_CI_POLL_INTERVAL_S` (10) — ~2 мин ожидания pending. - Тесты `tests/test_qg.py::TestCheckCIGreen`: success-1st / pending→success / failure-no-retry / pending-exhausts-attempts / 404 (time.sleep замокан). **62 passed** в `tests/test_qg.py`. - ADR `docs/architecture/adr/adr-0004-ci-poll-retry.md` + индекс README + CHANGELOG. `check_tests_passed` / `_parse_tests_verdict` (ORCH-47) НЕ тронуты. Мерж — на ревью оператору.
admin added 1 commit 2026-06-05 22:59:37 +03:00
feat(qg): ORCH-045 — poll check_ci_green with retry to fix CI race (pending->success)
All checks were successful
CI / test (push) Successful in 12s
CI / test (pull_request) Successful in 12s
0eff781d13
admin merged commit 982698c4e3 into main 2026-06-05 23:08:15 +03:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: admin/orchestrator#39