Files
wiki/memory/2026-06-15.md
2026-06-15 19:00:01 +03:00

12 KiB
Raw Blame History

(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-113BUG: 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-114BUG: 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.

2026-06-15 — ORCH-115 deterministic deploy runner

  • По обсуждению со Славой заведена задача ORCH-115: ORCH: replace LLM deployer with deterministic deploy runner.
  • Plane UUID: d3bf021f-a862-4ed3-88cb-5acd40b407f8, sequence_id 115, priority high, state Backlog.
  • Мотивация: LLM-deployer в happy path деплоя почти не нужен — staging/deploy должны быть детерминированными: команда → exit code → machine verdict artifact → healthcheck.
  • Scope:
    • Phase 1: для orchestrator заменить LLM deployer на deploy-staging детерминированным runner: staging_check + 15-staging-log.md writer.
    • Phase 2: project deploy contract для non-self repos (enduro-trails и похожие): deploy/rollback/healthcheck/artifact paths/service metadata.
    • LLM оставить только как fallback/debug analyst после deterministic failure, не как основной исполнитель deploy.
  • Boundaries: не смешивать с ORCH-112 cleanup и ORCH-114 transition lease/smart recovery.

2026-06-15 — ORCH-116 deterministic test runner

  • По обсуждению со Славой заведена задача ORCH-116: ORCH: replace LLM tester with deterministic test runner.
  • Plane UUID: ee4eab7e-8f28-46fc-9ca7-1ac3eadb6733, sequence_id 116, priority high, state Backlog.
  • Мотивация: LLM-tester в happy path частично избыточен — pytest/smoke/contract checks должны быть детерминированными: команда → exit code → 13-test-report.md с result: PASS|FAIL.
  • Scope:
    • deterministic test runner + test contract;
    • запуск pytest/smoke/contract checks в task worktree;
    • byte-compatible 13-test-report.md;
    • LLM tester только optional fallback для failure analysis, AC coverage gaps и human-readable diagnostics.
  • Boundaries: не смешивать с ORCH-115 deploy runner; developer/reviewer LLM роли не трогать; сохранить check_tests_passed contract и backward compatibility для реп без test contract.

2026-06-15 — pre-compaction note

  • Probed ORCH-114 work-item docs at tasks/orchestrator/docs/work-items/ORCH-114/*; those paths were missing in workspace at the time of check. Before any follow-up edits, re-locate the canonical ORCH-114 docs in the repo tree instead of assuming the work-item folder layout.