auto-sync: 2026-06-04 11:30:01
This commit is contained in:
@@ -91,3 +91,67 @@ ET-012 = «снизить minzoom публичных треков до z5». К
|
||||
- [ ] Healthcheck curl→python в enduro-trails docker-compose (мелкая Dev-задача).
|
||||
- [ ] ET-012 в Plane числится `done` ошибочно (из-за косяка №1). После фикса #1 — решить, перегонять ли заново для чистоты статуса (фактически фича работает).
|
||||
- [x] ✅ ИНФРА-БЛОКЕР СНЯТ (docker-root, root от Славы НЕ понадобился): `/var/log/enduro-trails` стал slin:slin (chown через alpine bind), deploy-hook прогнан целиком → **exit 0** (`Already up to date` → `App restarted` → `Deploy hook done`). Автодеплой enduro-trails честно работает end-to-end. **Урок: docker-root решает chown на ЛЮБОМ примонтируемом пути, не только репо** — sudo-пароль не нужен.
|
||||
|
||||
## 🔭 Observability fixes — PR #20 (4 правки, смержен 2801983d, задеплоен)
|
||||
Слава заметил баг учёта токенов («221 токен за $16.68 — абсурд») + попросил проверить последовательность/статусы ET-012 в Plane + чтобы все агенты прикладывали артефакты.
|
||||
|
||||
### Диагностика ET-012 (task 30) в Plane
|
||||
- Переходы статусов ПРАВИЛЬНЫЕ по методике: Backlog→In Progress→In Review→Approved→Architecture→Development→Review→Testing→(застрял In Progress).
|
||||
- Косяк A: статус НЕ доехал до Done (последствие косяка №1 — merge-вебхук обходил флоу).
|
||||
- Косяк B: только analyst прикладывал ссылки на артефакты, остальные агенты — нет.
|
||||
- **Токены (главный баг):** usage_comment показывал ТОЛЬКО input_tokens (21-81), а 99.99% входа в cache_read_input_tokens (1-8 млн) + cache_creation терялся. «221 токенов вход» на задачу.
|
||||
|
||||
### PR #20 — 4 правки (Dev opus-4-8, ветка fix/observability-and-merge-gate, 9 файлов +476/-16, 17 новых тестов)
|
||||
1. **gitea.py merge-gate** — при current_stage=="deploy" merge-вебхук молча return; done только через check_deploy_status. Остальные стадии merge→done сохранён. (закрыл вторую дверь баг-8)
|
||||
2. **usage.py+db.py токены** — idempotent колонка cache_creation_tokens, парсинг cache_creation_input_tokens, формат `8.5M in (8.4M cached) / 45.8k out · $7.29`, in_total=input+cache_read+cache_creation. cost_usd не тронут, COALESCE для NULL.
|
||||
3. **stage_engine.py+plane_sync.py** — set_issue_done() на success deploy→done, Plane доезжает до терминального Done (PLANE_STATES не менялся).
|
||||
4. **usage.py+launcher.py артефакты** — все агенты прикладывают ссылку: reviewer→12-review.md, tester→13-test-report.md, deployer→14-deploy-log.md, architect→ADR, developer→PR+branch, через gitea_public_url.
|
||||
|
||||
### ✅ Проверено вживую на проде (ET-012 task 30, новый код)
|
||||
```
|
||||
БЫЛО: 📊 Итого: 221 токенов вход / 174.6k выход · $16.68
|
||||
СТАЛО: 📊 Итого: 15.1M вход (15.1M cached) / 174.6k выход · $16.68
|
||||
💻 Developer · 8.4M in (8.4M cached) / 45.8k out · $7.29
|
||||
```
|
||||
- pytest: 243 passed, 10 failed (10 = off-limits HMAC/401 baseline, ни одного нового падения).
|
||||
- PR смержен 2801983d, orchestrator пересобран, health ok.
|
||||
- Правки 1/3/4 проверены по коду+тестам; в БОЮ увидим на следующей задаче (merge-gate, Plane→Done, артефакты).
|
||||
|
||||
### 🔑 Урок: cache_read_input_tokens у Claude CLI
|
||||
`usage.input_tokens` в Claude CLI JSON = ТОЛЬКО свежий некэшированный вход (~десятки токенов). Реальный объём промпта = input + cache_read_input_tokens + cache_creation_input_tokens. Любой учёт токенов агентов на Claude CLI ОБЯЗАН суммировать все три, иначе занижение в ~50000x.
|
||||
|
||||
### TODO косметика телеги (обсуждается, Слава пока не выбрал)
|
||||
- Орк шлёт ~15 сообщений/задачу + шум QG-pending (не ошибка, а ожидание CI) + тех-мусор (run_id, exit_code, пути логов) + устаревший «:approved:».
|
||||
- Вариант A: почистить тексты (убрать «запущен», QG-pending не слать, убрать мусор) → ~6-7 сообщений.
|
||||
- Вариант B (рекомендован): одно живое сообщение-трекер на задачу (editMessageText по стадиям) + отдельные алерты только approve/fail/error. Нужно хранить message_id, fallback на edit-фейл.
|
||||
- Все ТГ-сообщения в `src/notifications.py` (parse_mode HTML).
|
||||
|
||||
### Косметика телеги — Слава выбрал ВАРИАНТ B+ (согласование макета, 04.06 вечер)
|
||||
Слава выбрал B (живой трекер) + 3 добавки:
|
||||
1. **Строка «Ревью БРД»** — отдельная стадия, время в ней = **ЕГО время** (от «BRD готовы» до смены статуса на Approved), НЕ агентское. Помечать `⏸️ Ревью БРД · твоё время ⏳`.
|
||||
2. **По каждому этапу:** токены · стоимость · **модель** (`1.1M · $2.38 · opus-4-8`).
|
||||
3. **В «Итого»:** общее wall-clock + агентское + твоё (`⏱️ Всего 56м · агенты 44м · твоё 8м`).
|
||||
|
||||
**Согласованный макет (финиш):**
|
||||
```
|
||||
🎉 ET-012 · Треки с зума z5 — ГОТОВО
|
||||
✅ Analysis 10м · 1.1M · $2.38 · opus-4-8
|
||||
⏸️ Ревью БРД 8м · твоё время
|
||||
✅ Architecture 9м · 1.5M · $2.24 · opus-4-8
|
||||
✅ Development 11м · 8.4M · $7.29 · opus-4-8
|
||||
✅ Review 3м · 1.2M · $1.53 · sonnet-4.6
|
||||
✅ Testing 5м · 1.2M · $1.51 · sonnet-4.6
|
||||
✅ Deploy 6м · 1.6M · $1.73 · opus-4-8
|
||||
💰 15.1M токенов · $16.68
|
||||
⏱️ Всего 56м · агенты 44м · твоё 8м
|
||||
🔗 PR #24 · 📦 deployed
|
||||
```
|
||||
В процессе: текущая стадия `🔄 Deploy … идёт`, трекер редактируется через editMessageText.
|
||||
|
||||
**4 вопроса заданы Славе, жду ответа ПЕРЕД ТЗ Dev'у:**
|
||||
1. Алерты (approve-gate / фейл деплоя / ошибка) — отдельными сообщениями с пингом, трекер молча редактировать? (я рекомендую да)
|
||||
2. Модель — короткое имя (opus-4-8) или полное?
|
||||
3. «Твоё время» — только ревью БРД или все gate-ожидания? (пока gate один — после аналитика)
|
||||
4. Токены на этап — полный вход с кэшем (1.1M) или in/out раздельно (1.1M↓/40k↑)?
|
||||
|
||||
**Тех. реализация (для ТЗ):** все ТГ-сообщения в `src/notifications.py` (parse_mode HTML). Нужно: хранить message_id трекера по задаче (новая колонка/таблица), editMessageText по стадиям, fallback на новое сообщение если edit упал. Время «твоё» = дельта между notify «BRD готовы» и переходом analysis→architecture (gate Approved). Модель агента — из конфига стадии/agent_runs.
|
||||
|
||||
Reference in New Issue
Block a user