# 2026-06-03 ## Orchestrator — ORCH-1b resilience ГОТОВ + проверен на проде (продолжение дня 02.06) ### Итог: PR #3 = ORCH-1 очередь + ORCH-1b resilience — готов к мержу, ждёт ОК Славы **Resilience-слой проверен мной вживую на проде (не на слово):** - ✅ **Preflight** — `/queue` → `preflight ok: True`, reason `2.1.142 (Claude Code)`. `claude --version`, токены НЕ тратит. CLI мёртв → job ждёт в очереди, не падает. 🚫 без prompt-ping - ✅ **429-классификатор** (`error_classifier.py`) — живьём: `429`→transient, `overloaded`→transient, traceback→permanent - ✅ **Backoff** — exp `min(2^n*10,600)` + `available_at`/`transient_attempts` колонки + Retry-After, PRAGMA-safe миграция (`_ensure_column`) - ✅ **Circuit breaker** (`queue_worker.py CircuitBreaker`) — `/queue` отдаёт `resilience.breaker` (closed/open/half-open, счётчик, pause_remaining). 3 transient → open 300с, CLI не дёргаем, алерт → half-open проба → closed - ✅ config: 6 ключей (preflight_cache_ttl=45, backoff_base=10, backoff_max=600, transient_max=5, breaker_threshold=3, breaker_pause=300) - ✅ **110 passed** (26 новых resilience-тестов), 9 fail — те же pre-existing 401 baseline - ✅ Контейнер пересобран из ветки `feature/ORCH-1-job-queue`, health ok, PR #3 mergeable:True ### Метрики Dev - `orch1_queue` (база): done, 12m26s, 337k токенов - `orch1b_resilience`: done, 9m42s, 260k токенов, 7 коммитов поверх базы (запушены) ### ⚠️ Урок про Dev (важный) Dev **запаниковал** на старте orch1b: «параллельная сессия пишет те же файлы прямо сейчас!» → остановился из осторожности (safety>completion). **Ложная тревога** — другого исполнителя не было, он принял СВОЮ активность за чужую (mtime менялись из-за его же записей). По факту всё доделал, закоммитил и запушил сам. Я только пересобрала контейнер + проверила вживую. - **Правило:** при «остановился из осторожности» от Dev — не верить на слово что не сделано; проверять `git log`/`git status`/remote. Часто работа УЖЕ сделана и запушена. ### Документация обновлена - `tasks/orchestrator/PROGRESS_2026-06-02.md` — ORCH-1b помечен 🟢 готов + результаты живой проверки - `tasks/orchestrator/STATUS.md` — актуальный статус - `MEMORY.md` — статус orchestrator обновлён - На сервере Dev: `docs/ARCHITECTURE.md`, `docs/ORCH-1_JOB_QUEUE.md` (раздел resilience), `reports/dev-2026-06-02-orch1b-resilience.md` ### Ждёт ОК Славы - **Мержить PR #3** (очередь + resilience) в main? После мержа орк = автономный (webhook) + безопасный (multi-repo ORCH-6) + надёжный (очередь restart-safe + retry + 429-устойчивость) - Висят: PR #19 (enduro-trails), PR #1 (orchestrator worktree) — мержить? ### Бэклог orchestrator - ORCH-3 (S-2/S-3 rollback), ORCH-4 (M-3 stage-engine), ORCH-5 (M-7 idempotency/webhook dedup) ### Ключевые идентификаторы (для продолжения) - Хост `slin@82.22.50.71`, репо `/home/slin/repos/orchestrator`, контейнер `orchestrator` (8500) - Ветка PR #3: `feature/ORCH-1-job-queue` - Деплой: `docker compose up -d --build && sleep 6 && curl -s :8500/health && curl -s :8500/queue` - Тесты в контейнере: `IMG=$(docker inspect orchestrator --format '{{.Config.Image}}'); docker run --rm -v /home/slin/repos/orchestrator:/code -w /code --entrypoint python3 $IMG -m pytest tests/ -q` - ТЗ: `tasks/orchestrator/DEV_TASK_ORCH1_QUEUE.md` (раздел ДОПОЛНЕНИЕ A-D)