Files
wiki/memory/2026-06-10.md
2026-06-10 11:50:01 +03:00

8.9 KiB
Raw Blame History

2026-06-10

ORCH-100 (F1b sidecar-watchdog) BRD APPROVED (Слава: «проверь и если ок подтверждай», 05:41 UTC)

  • Первая задача эпика саморазвития, прошедшая аналитику. BRD/ТЗ/AC — ЭТАЛОН.
  • Аналитик ПРОЧИТАЛ концепцию из репо (docs/epics/self-evolution.md) и идеально усвоил архрамки: C-1 sidecar отдельный контейнер / код в репо watchdog/ / C-2 без плеча / C-3 тонкий не-Grafana / свой Telegram-канал / read-only docker.sock / орк-down=тревога. → подтвердило: класть концепцию в репо было правильным решением.
  • Верифицировала кодом (урок дня):
    • F1a /metrics РЕАЛЬНО в проде (ORCH-099 done, HTTP 200, конверт schema_version:1/generated_at/clk_tck:100/stages/queue/agents/cost — точно как в ТЗ). Контракт под F1b работает.
    • disk_watchdog.decide_action (src:105) — образец решающей функции реален (ТЗ звал 'decide', факт 'decide_action' — по сути верно).
    • watchdog/ папки ещё нет — верно, F1b создаёт.
  • Аналитик грамотно: анти-дубль диск-алерта с ORCH-063 (BR-10/FR-9/AC-5, тонкость!), вынес в зону архитектора стек Python/Go + владельца диск-алерта + mem_limit + топологию сети. 14 TC, 7 AC.
  • Закрыла brd-clock → Approved (200) → architect job 1526 running, stage=architecture, ветка feature/ORCH-100-fnd-f1b-sidecar-watchdog. autoApprove? нет — был ручной approve Славы (на 100 не вешали autoApprove, только запускали F1a в авто). Идёт автономно дальше (autoDeploy если был навешен).

🎯 Концепция: скоуп наблюдения (3 слоя) + атрибуция уроков (Слава 10.06 06:01)

  • Вопрос Славы: F1a/F1b мониторят только орк, или проекты (ET-контейнер) тоже? + саморазвитие может катить ET: фича в ET деградировала ET — это орк недоработал процесс или в ET усилить тесты?
  • Вписала в концепцию (docs/epics/self-evolution.md, обновлён в репо):
    • Скоп наблюдения 3 слоя: Слой1 проекты как ЗАДАЧИ в конвейере (ET в /metrics stages) — в скопе F1a/F1b (здоровье конвейера). Слой2 проекты как КОНТЕЙНЕРЫ на хосте (enduro-app через docker.sock) — в скопе F1b (жив/мёртв, общий хост впритык). Слой3 ВНУТРЕННЕЕ бизнес-здоровье продукта (эндпоинты ET 200? latency?) — НЕ фундамент, это мониторинг ПРОДУКТА = будущая фича D4/D5 (per-project health, опция заказчику).
    • Атрибуция уроков (новый шаг петли 8A): деградация продукта после фичи → петля различает: А) platform-level (орк недоработал ПРОЦЕСС — нет регресс-гейта/перф-бенчмарка → чинить в D1/D2, польза ВСЕМ) vs Б) project-level (в ET мало тестов → усилить тесты в бэклоге ET, польза только ET). Бывает ОБА. Без слоя-3 детекции петле нечего атрибутировать → слой3 нужен и петле, не только заказчику. E2-ретроспективщик несёт классификацию, спорное → Стрим/Слава.
  • Commit в main. Аналитик увидит свежую версию.

🚀 ORCH-98 (F2 журнал уроков) ЗАПУЩЕНА в авто (Слава: «запускаем, учти выводы, авто», 06:18 UTC)

  • Перед запуском УЧЛА выводы обсуждения: дописала в ТЗ ОБЯЗАТЕЛЬНОЕ поле атрибуции в схему журнала с самого начала (иначе переделывать):
    • attribution: platform-level / project-level / both / unknown (нуллабельно — классификацию позже ставит ретроспективщик/Стрим, но КОЛОНКИ сразу).
    • проект/repo (кого касается), целевой домен (slug модуля D1-D5).
    • связь со слоем-3 детекции (деградация продукта = тип урока).
  • autoApprove+autoDeploy, HIGH → task 86, analyst job 1528 queued, ветка feature/ORCH-098-fnd.
  • ⚠️ F1b (ORCH-100) уже на developer (job 1531 running) — architect отработал, sidecar-код пишется. Очередь serial: 100(dev)→98(analyst).
  • Фундамент: F1a done · F1b 🔵 developer · F2 🔵 queued. Все 3 кирпича в движении.
  • Скрипт: temp/launch_f2.py.

ORCH-100 (F1b sidecar-watchdog) В ПРОДЕ — КОД (Слава: «проверь и подтверждай», 06:57 UTC)

  • Проверила перед Confirm: reviewer APPROVED, tester PASS (66 поставочных + 1617 регресс зелёный, src/ НЕ тронут байт-в-байт). watchdog/ создан (Dockerfile/main/core/config/collectors), отдельный сервис orchestrator-watchdog в compose, network_mode host, docker.sock:ro, mem_limit 128m, kill-switch WATCHDOG_ENABLED.
  • Ключевая проверка безопасности: deploy-hook поднимает только $TARGET_SERVICE (orchestrator) с явным именем up -d --no-build → Confirm Deploy перезапускает ТОЛЬКО орк, watchdog НЕ трогает. Confirm = мёрж кода watchdog/ в main + рестарт орка. Безопасно.
  • Confirm Deploy (200) → deploy→done, merge-verify CONFIRMED сам (watchdog/ в main YES, орк health 200), Monitoring after Deploy (post-deploy job 1536).
  • ⚠️ ОСТАЁТСЯ РУЧНОЙ ИНФРА-ШАГ (Слава/Стрим на хосте) — sidecar ЕЩЁ НЕ ЗАПУЩЕН как контейнер:
    1. Создать ОТДЕЛЬНОГО Telegram-бота watchdog + chat-id → положить WATCHDOG_TG_BOT_TOKEN/CHAT_ID в .env.watchdog на хосте.
    2. Заполнить пороги (дефолты годятся), WATCHDOG_ENABLED=true.
    3. docker compose up -d --build orchestrator-watchdog (ТОЛЬКО этот сервис, НЕ трогать орк!).
    4. Проверка: docker logs orchestrator-watchdog (старт+тики), тестовый алерт, на staging остановка орка → orch_down.
  • Анти-дубль диска: WATCHDOG_DISK_CRIT_ENABLED=false дефолт (85%-алерт остаётся за disk_watchdog ORCH-063).
  • Фундамент: F1a · F1b КОД в проде (контейнер ждёт ручного старта) · F2 🔵 в работе (analyst).

🚀 Sidecar-watchdog ПОДНЯТ боем (Слава: «Поднимай», 08:46 UTC)

  • Создан /home/slin/repos/orchestrator/.env.watchdog (канон из .env.example + chat_id=126472752, токен ПУСТ fail-safe). WATCHDOG_CONTAINERS расширен: orchestrator,orchestrator-staging,gitea,enduro-trails-app-1,plane-app-api-1,plane-app-plane-db-1.
  • docker compose up -d --build orchestrator-watchdog (ТОЛЬКО watchdog) → собрался, Up. Орк НЕ задет (health 200).
  • Память 17.7/128 MiB — тонкий, как задумано. Тики каждые 30s, demon живёт.
  • 🔥 Sidecar сразу поймал мёртвый хвост ET (stage_stuck ET-001/003/004/010/013 — смоук-тесты в analysis ~20 дней). Наблюдаемость работает боем.
  • ⚠️ Алерты НЕ шлются: telegram token/chat not configured -> skip send (нет своего бота, BR-8 — свой канал не токен орка). chat_id прописан, нужен ТОЛЬКО токен отдельного бота от Славы (@BotFather /newbot → токен → впишу в .env.watchdog → рестарт watchdog).
  • Фундамент: F1a · F1b КОД в проде + КОНТЕЙНЕР ПОДНЯТ (молчит без бота) · F2 🔵 в работе.
  • ⚠️ Прод main HEAD b915503 — после рестарта орк подтянул; origin af949af (чуть впереди — проверить рассинхрон позже, орк жив).