РуБенч (RuBench) от vibecoding.ru · AIOG1
Починить падение сцен на постах канала
aiogram/aiogram · PYTHON · base 1708980cebc5
вход агента
Постановка
Это наш форк aiogram — мы ведём на нём несколько ботов и правим фреймворк
сами, когда упираемся. Сейчас упёрлись.
У одного из ботов подключены Scenes (диалоговые сцены поверх FSM). Как
только этого бота добавили админом в канал, посыпались ошибки: каждый
пост в канале (и каждое редактирование поста) роняет обработку апдейта с
KeyError 'state' где-то в недрах машинерии сцен. До наших хендлеров
channel_post апдейт вообще не доходит.
Разберись и почини во фреймворке:
1. Посты каналов (новые и отредактированные) должны нормально доходить до
обычных хендлеров, даже когда в диспетчере зарегистрированы сцены.
Если FSM-контекст для апдейта недоступен — сценная обвязка спокойно
пропускает апдейт дальше, а не падает.
2. В каналах нет пользователя, и сейчас FSM-контекст для канальных
апдейтов не резолвится вообще. Для стратегий FSM, которые и так
работают в разрезе чата (CHAT и CHAT_TOPIC), контекст должен
определяться и без пользователя — по самому чату/каналу. Поведение
пользовательских стратегий не менять.
3. Если хендлер сцены всё же вызван, а контекста сцены реально нет (FSM
не подключён, пайплайн собран криво) — хотим осмысленную ошибку
фреймворка (SceneException с внятным текстом, какого ключа не
хватило), а не голый KeyError.
Существующее поведение для личек и групп ломать нельзя: боты со сценами
и без, которые сейчас работают, должны работать ровно как раньше. Родные
тесты фреймворка должны проходить.
(тикет LAVKA-TG-CHAN)
артефакты билета
Verifier / Solution
- VERIFIER
- приватный оракул · SHA-256 в манифесте
- SOLUTION
- золотой фикс мейнтейнера
полный публичный артефакт — task.md; оракул не раскрывается
раунд 1 · 12 конфигураций × 3 прогона
Поячеечные исходы · раунд 1
| конфигурация | прогоны | итог |
|---|---|---|
| Claude Code + Fable 5 | FAIL—— | 0/1 |
| Codex + GPT-5.6 Sol | PASSPASSPASS | 3/3 |
| Claude Code + Opus 4.8 | PASSPASSPASS | 3/3 |
| Codex + GPT-5.6 Luna | PASSPASSPASS | 3/3 |
| Claude Code + Sonnet 5 | PASSPASSFAIL | 2/3 |
| SourceCraft CLI + ds | PASSFAILFAIL | 1/3 |
| Codex + GPT-5.5 | FAILFAILFAIL | 0/3 |
| Claude Code + Haiku 4.5 | FAILFAILFAIL | 0/3 |
| Koda CLI + koda-pro | ——— | — |
| Antigravity + Gemini 3.1 Pro | FAILFAILFAIL | 0/3 |
| Antigravity + Gemini 3.5 Flash | FAILFAILFAIL | 0/3 |
| SourceCraft CLI + legacy | FAILFAILFAIL | 0/3 |
оракул приватный · правильность = зелёный регресс-тест мейнтейнера