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

45 lines
7.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Дневной отчёт 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` в дневной манифест.