auto-sync: 2026-06-05 10:50:01

This commit is contained in:
Stream
2026-06-05 10:50:01 +03:00
parent 5e09f69964
commit 476c4610c6

View File

@@ -307,3 +307,44 @@
4. Ни одного «молчаливого» деплоя (каждый → Plane + Telegram)
5. Период ≥10 деплоев ИЛИ ≥2 недели без инцидентов
Связи: ORCH-7/21/34/35. Ждёт когда вернёмся.
---
## ORCH-35 ДОРАБОТКА — условный staging-гейт (Вариант А) ✅ проверено лично (05.06 ~07:40 UTC)
### Решение Славы: Вариант А — условный гейт
Гейт `deploy-staging` срабатывает реально ТОЛЬКО для self-hosting (проект orchestrator). Для остальных проектов (enduro-trails и пр.) — мгновенный зелёный pass, чтобы их задачи НЕ застряли на откате.
### Что сделал Dev (коммит `e0c14fa` в той же ветке `feature/ORCH-35-staging-gate`)
- `src/qg/checks.py:451-455``SELF_HOSTING_REPO = "orchestrator"` + `is_self_hosting_repo(repo)` (case-insensitive)
- `check_staging_status`: если repo НЕ self-hosting → сразу `(True, "Staging gate N/A for <repo>")`, файл `15-staging-log.md` даже не читается. Если orchestrator → реальная проверка как было.
- `STAGE_TRANSITIONS` НЕ трогали — стадия остаётся в цепочке для всех, условность зашита в QG.
- `tests/test_qg.py` — +7 новых тестов под условную логику
### Проверено МНОЙ лично на проде (прод-образ орка + примонтированы исходники ветки)
- **319 passed, 0 failed** (было 312, +7 новых)
- Условность вживую (через `docker cp` файла в контейнер, НЕ `-v` mount — volume-mount файла НЕ подхватывается, урок!):
- `check_staging_status("enduro-trails", ...)` → (True, "Staging gate N/A...") БЕЗ файла ✓
- `check_staging_status("orchestrator", ...)` без файла → (False) ✓, с `staging_status: SUCCESS` → (True) ✓
- repo приходит как plain gitea name (`ProjectConfig.repo` из реестра `projects.py`) — подтверждено, сравнение корректное
- Доработка тронула только `qg/checks.py` + `tests/test_qg.py`. git diff ветки показывает 6 файлов — это НАКОПЛЕННЫЙ diff всей ветки против main (первый коммит e0b6e92 + доработка e0c14fa), сама доработка stages.py НЕ меняла.
### projects.py (разведано, реестр проектов из ORCH-6 фикса 02.06)
Связывает Plane-проект uuid ↔ Gitea-репо ↔ префикс. `ProjectConfig` (frozen): plane_project_id, repo, work_item_prefix, name. Источник: env `ORCH_PROJECTS_JSON` → settings.projects_json, fallback `_DEFAULT_PROJECTS` (enduro-trails ET первый намеренно, orchestrator ORCH). Парсер устойчив (битый элемент скип, пусто→дефолт). Отсюда берётся способ отличить self-hosting (repo=="orchestrator").
### СТАТУС: ✅ СМЕРЖЕНО И ЗАКРЫТО (05.06 ~07:43 UTC)
- PR `#31` СМЕРЖЕН (merge commit `f1b3146`, merged=True/closed). main HEAD = `f1b3146`, под ним `e0c14fa` + `e0b6e92`.
- ORCH-35 переведён Backlog→Done напрямую (HTTP 200, state `3738cd3c`). Мимо In Progress — webhook не дёрнут.
- ORCH-35 id `4ead9be7-e1bf-4a28-8c76-88bda1c1fc2c`
### 🏁 СЕРИЯ САМОДЕПЛОЯ — ФИНАЛ
Все 5 этапов готовы и проверены лично:
- Этап 1 ORCH-31 ✅ Done (PR #28)
- Этап 2 ORCH-32 ✅ Done (песочница staging 8501)
- Этап 3 ORCH-33 ✅ Done (PR #29, staging_check.py)
- Этап 4 ORCH-34 ✅ Done (PR #30, deploy-hook.sh + авто-rollback)
- Этап 5 ORCH-35 ✅ DONE (PR #31 смержен `f1b3146`, условный staging-гейт, 319 тестов)
- Вариант B вынесен в ORCH-36 (Backlog) — исполняемый деплой, на потом
🏁🏁🏁 СЕРИЯ САМОДЕПЛОЯ ПОЛНОСТЬЮ ЗАВЕРШЕНА 05.06.2026. Орк имеет staging-предохранитель: прод-деплой недостижим, пока staging-гейт не зелёный (для self-hosting). Следующий шаг когда вернёмся — ORCH-36 (исполняемый деплой) с 5 метриками доверия.