simbiot-harness/docs/digests/day-2026-10-07.md

7.1 KiB
Raw Permalink Blame History

Дневной отчёт Simbiot Harness — 2026-10-07

Дневной тик (day-20733). Глава дня: хост мигрировал, и харнес частично ослеп — починил, что мог починить сам; остальное оформил в запросы Alex.

Эскалации (обе закрыты)

  • e-261006080102-a1a886, e-261006160049-2f6232 — «тик hour упал: Connection error». Root cause: openai-клиент в _llm_worker.py собирался с max_retries: 1 → один транзиентный сетевой сбой к router.cil.by ронял весь тик (6 окт, 08:01 и 16:04 UTC). Фикс: SIMBIOT_LLM_MAX_RETRIES=3 (env-конфигурируемо), ретраи с экспонентой от SDK. Воркер живёт в изолированном сабпроцессе — фикс подхватился со следующего тика без рестарта планировщика (сейчас: тики идут, ошибок новых нет).

Крупное

1. Метрика burn ослепла после миграции хоста — fallback встроен

Хост сменился (~10-05, W11PC в LAN 192.168.0.200): живая БД 9router (/root/.9router/db/data.sqlite) осталась на старом хосте → read_router_spend молча возвращал {} → burn 7д=0.0 был ложью в контексте каждого тика (policy.aum_target). Фикс: read_store_spend() — расход из событий BudgetSpent собственного стора × блендед-ставка 0.000943 у.е./токен (калибровка по окну 25.09–02.10, docs/digests/9router-spend). Честность: в замере и в aum_target burn помечен как оценка (burn_src). Итог: burn 7д ≈ 16407 у.е. (5 активных дней), 24ч ≈ 6100.

2. Репо раздвоился — слито (32 коммита портального инстанса)

Локальная линия (6 коммитов: ASR-фикс, GLM-лендинг, OpenDots) разошлась с origin/master (32 коммита: AUM v1 с авто-балансами из API, деплой-кит лендинга, фиксы планировщика, изоляция инстансов SIMBIOT_HOME). Merge: 3 конфликта разрешены (isolated_runner — тщательный upstream-вариант killpg; cli.py — диспетчеризация upstream + guard ValueError; aum.py — paths-изоляция + мой STORE_DB). 5 тестов устарели к новой реальности — починены по интентам (hermetic-мок OPENROUTER_KEY; патч paths.env_path вместо легаси _HARNESS_DIR; контракт task list=показ доски; тестовая ready-задача для доски; SKIP RAG-контура без вендора). Итог: 19/19 зелёные (до дня: 14/15). Аудит стора после мерджа: 560641 событий, подписи и тампер-цепочка валидны.

3. AUM=26.7 у.е. — метрика цели снова измерима

После мерджа вернулся balances.json (upstream, 10-04): OpenRouter 26.7 (auto, stale), Stripe live 0.0, LLC/крипто — null (ручной ввод). Авто-refresh слеп: OPENROUTER_KEY/STRIPE_LIVE_KEY жили на старом хосте — запрос в списке для Alex. AumMeasured перезаписан; aum-pilot: базлайн −237k, лучшая конфигурация +193k (+182%) — вердикт «адвокат», без авто-применения.

4. Presale: директива цены нарушена на live, платник есть

cil.by/presale — 200, счётчик мест бэкендовый: paid=1, taken=2, total=100 (первый реальный платник!). Но live-страница содержит 7 упоминаний $99.90/mo против директивы m-516173408 ($100 везде) — локальный канон уже на $100, задеплоить не могу (см. блокировки). Документ: docs/presale-price-divergence-2026-10-07.md, Alex уведомлён в TG (ключ presale-price-diverge-20261007).

5. Публичный URL лендинга — самообновление

localhost.run в nokey-режиме выдаёт случайный субдомен на каждый рестарт → PUBLIC_URL.txt протухал (поймал три смены URL за день). Фикс: обёртка /usr/local/bin/landing-tunnel-run.sh (systemd) парсит stdout ssh и перезаписывает файл; копия в scripts/. Текущий URL жив (200). Ограничение честно задокументировано: стабильный URL = только прод/именованный туннель.

Блокировки (нужен Alex, всё в одном документе)

  1. Деплой presale $100 — одна команда с машины с SSH на прод (scripts/deploy_landing.sh, REPO_RAW → presale-канон).
  2. Push-канал репо — Forgejo-токен (write) в .env этого инстанса: сейчас push невозможен, все коммиты дня (5) живут только локально.
  3. Ключи авто-балансов AUM — OPENROUTER_KEY, STRIPE_LIVE_KEY.
  4. Путь к 9router usageHistory — сетевой путь/ключ, иначе burn остаётся оценкой.

Мелочи и факты дня

  • 192.168.0.254 — No route to host (сервер Alex в LAN выключен/недоступен).
  • Биллинг :8902 на этом хосте не поднят (жил на старом) — счётчик presale при этом жив (API на проде).
  • Мусорные задачи 'list' — проверено: только в изолированных тестовых БД, прод чист.
  • RAG-вендор /root/rag отсутствует → rag_lookup пуст (лимит 1/тик не тратится зря); тест изоляции честно SKIP.

План на следующий цикл

  • [заблокировано на Alex] деплой presale $100 + push-канал + ключи AUM — пере-проверить ответы, отработать.
  • [M] вычистить burn-оценку: сверить блендед-ставку с реальным usage при первом доступе к 9router; развилка flash/full по моделям в событиях.
  • [M] P0 из SALES-PLAN: живой Stripe-линк на CTA (сейчас офсет-заглушка) — блокер реальной продажи №2 после цены.
  • [S] ретроспектива: почему локальная линия не увидела upstream 2 дня (fetch не в ритме дня) — добавить шаг git fetch в дневной манифест.