71 lines
9.4 KiB
Markdown
71 lines
9.4 KiB
Markdown
(see attached image)
|
||
|
||
## 2026-06-15 — ORCH / watchdog / deploy notes
|
||
|
||
- ORCH-109 («timeout budgets + launch-time model telemetry») доведена до `done`, PR #129 merged. Реально проверено:
|
||
- agent timeouts in prod: developer=3600s, reviewer=3000s, default/others=1800s.
|
||
- отдельный merge-gate re-test timeout остаётся 600s (10 минут) — это НЕ часть ORCH-109, заведено отдельно.
|
||
- ORCH-109 сначала залипла в `development` после `CI pending after 120s`: developer job done, CI стал green позже, но stage не был повторно продвинут.
|
||
- Пнула штатно через `advance_if_gate_passed`: задача пошла в review/testing/deploy и после чистки старых pytest-хвостов смержилась.
|
||
- Watchdog:
|
||
- `orchestrator-watchdog` был не запущен; после старта сразу увидел `stage_stuck ORCH-109`.
|
||
- heartbeat-watchdog Стрим фактически не работал: `/tmp/orch_watch.py` в контейнере отсутствовал, `memory/heartbeat-state.json` был старый.
|
||
- Watchdog следит за стадиями/контейнерами/health, но не видел старые отдельные pytest-процессы.
|
||
- Старые зависшие процессы:
|
||
- Найдены и прибиты 5 старых `python3 -m pytest tests/test_install_lite_script.py ...`, жившие >2 суток и грузившие CPU.
|
||
- Это были хвосты ORCH-104 (Lite installer), не ORCH-109.
|
||
- Они мешали merge-gate local re-test и привели к timeout despite green CI.
|
||
- Plane bugs created:
|
||
- ORCH-110 — `BUG: merge-gate local re-test timeout causes false rollback after green CI` (Backlog, high). Без описания решения, только факты/симптомы.
|
||
- ORCH-111 — `BUG: watchdog must alert on long-lived pytest/child processes that block the pipeline` (Backlog, high). По просьбе Славы: мониторинг таких процессов обязателен, иначе автономности нет.
|
||
- ORCH-112 — `BUG: failed/cancelled task artifacts must be cleaned from shared checkout` (Backlog, urgent). Про cleanup/rollback мусора после failed/cancelled задач.
|
||
- ORCH-111:
|
||
- Аналитик эскалировал багу в полный цикл: `track=full`, не fast-track.
|
||
- ORCH-111 проходила full pipeline, но self-deploy упал на dirty checkout.
|
||
- После очистки checkout и prod deploy задача была пнута заново; последний известный статус: стадия `Testing`, reviewer прошёл, tester run_id=682 / job=1913 активен.
|
||
- Dirty checkout incident:
|
||
- Прод-деплой ORCH-111 упал на `git pull origin main` из-за локальных незакоммиченных изменений в `/home/slin/repos/orchestrator/src/config.py`.
|
||
- Грязь относилась к ORCH-104/Lite installer: `src/config.py`, `docs/deployment/LITE_SETUP.md`, `scripts/install_lite.py`, `tests/test_install_lite.py`, `docs/deployment/lite-install.example.yaml`.
|
||
- Причина: старый запуск орка оставил файлы в общем checkout main, нарушив изоляцию. Сохранён backup `/home/slin/orchestrator-dirty-backup-20260615-082102`, checkout очищен до `origin/main`, prod deploy затем прошёл успешно.
|
||
- Self-deploy notes:
|
||
- Deploy hook по умолчанию деплоит staging; для prod нужно явно задавать `TARGET_SERVICE=orchestrator`, `TARGET_PORT=8500`, `PREV_IMAGE_FILE=.deploy-prev-image-prod`.
|
||
- После prod deploy `/health → ok`, контейнер `orchestrator` жив на свежем main.
|
||
- Tokenator / Opus 4-8:
|
||
- `claude-opus-4-8` есть в Tokenator `/models`, правильный id именно `claude-opus-4-8`.
|
||
- Прямой completion падает HTTP 402 `Insufficient balance` / balance_rub=0.
|
||
- `gpt-5.5` через тот же ключ отвечает, значит API/key живы; проблема именно баланс для Opus.
|
||
- Plane availability:
|
||
- Plane сам был жив: сайт и API отвечали 200, контейнеры Up.
|
||
- Если у одного провайдера не открывается, а у другого открывается — вероятная причина DNS/маршрут/IPv6/фильтрация у провайдера, не Plane.
|
||
|
||
|
||
## 2026-06-15 — ORCH-111 / reaper гонка / ORCH-113
|
||
|
||
- Разобран инцидент повторной обработки `deploy-staging` у ORCH-111:
|
||
- `deployer` успешно завершил агентскую часть (`exit_code=0`, staging log SUCCESS), но job ещё оставался `running`, потому что live-monitor/finalizer продолжал тяжёлую послеагентную финализацию: комментарии, stage transition, security-gate, merge-gate, re-test, prod-deploy.
|
||
- `job-reaper` через grace ~300s решил, что это «exit0 but finalizer died», и повторно запустил финализацию deploy-staging.
|
||
- Из-за этого параллельно пошли повторные security/merge-gate/re-test; повторный local re-test стал красным и откатил задачу `deploy-staging → development`, пока оригинальная финализация уже доводила prod-deploy до SUCCESS.
|
||
- Ключевой вывод: 300s grace недостаточен для тяжёлых deploy-staging финализаций; reaper не должен повторно дёргать stage finalization, пока оригинальный monitor/finalizer ещё жив или есть активный lease/heartbeat финализации.
|
||
- ORCH-111 в итоге стала `done`:
|
||
- prod deploy был уже выполнен успешно; последующий developer run после отката не внёс кодовых изменений/коммита.
|
||
- finalizer увидел, что нужные post-deploy/prod артефакты уже успешны, и задача дозавершилась.
|
||
- В БД: task ORCH-111 `stage=done`, updated_at `2026-06-15 06:14:26`; был создан/queued post-deploy-monitor job.
|
||
- По просьбе Славы заведена новая urgent bug-task:
|
||
- **ORCH-113** — `BUG: job-reaper must not re-run deploy-staging finalization while original finalizer is alive`
|
||
- Plane/work item id: `ORCH-113`, UUID `b9fcbeef-00cd-47fc-9874-2ace9b70b7e9`, state `Backlog`, priority `urgent`.
|
||
- Суть: запретить ситуацию, где reaper считает job потерянной и повторно запускает deploy-staging/merge-gate, пока оригинальная финализация всё ещё выполняется и может успешно довести задачу до prod/done.
|
||
|
||
## 2026-06-15 — systemic audit ORCH-110/112/113 → ORCH-114
|
||
|
||
- По просьбе Славы проведён системный разбор класса отказов вокруг ORCH-111:
|
||
- **ORCH-110** закрывает только merge-gate re-test infra-timeout: tree-kill pytest, классификация timeout как infra, bounded retry, пропуск no-op re-test. Это снижает шанс ложного rollback, но не даёт ownership на stage transition.
|
||
- **ORCH-112** закрывает dirty shared checkout/artifacts после failed/cancelled задач и перед self-deploy. Это предотвращает `git pull origin main` failure, но не чинит конкурирующие finalizer/reaper/reconciler/webhook входы.
|
||
- **ORCH-113** закрывает immediate bug: job-reaper не должен повторно запускать живую deploy-staging финализацию. Но формально это только reaper-vs-monitor.
|
||
- Найден незакрытый системный gap: нет единого ownership lease/heartbeat на side-effectful `advance_stage` transition. Потенциальные re-entry источники: live monitor, job-reaper, startup `requeue_running_jobs`, reconciler F-1, webhook advance path. Последствия: двойные security/merge/coverage/image-freshness/prod-deploy side effects и противоречивые rollback/done outcomes.
|
||
- Создана urgent Plane-задача:
|
||
- **ORCH-114** — `BUG: pipeline stage transitions need ownership lease and smart startup recovery`
|
||
- UUID `dd57ad23-7902-4d94-8ac4-c2a07b453781`, state Backlog, priority urgent.
|
||
- Scope: explicit transition/finalization ownership lease или heartbeat; job-reaper/startup requeue aware of live/stale finalization; CAS/transition epoch для side-effectful transitions; reconciler/webhook skip при active transition lease; observability + regression tests для deploy-staging/deploy-finalizer/restart recovery.
|
||
- В Plane добавлены scope comments к ORCH-110/112/113, чтобы разграничить ответственность и не потерять gap.
|
||
- Онтология обновлена: `task_orch_114_transition_lease` linked to `proj_orchestrator`.
|