AI Mindset финальный прогон качестваобновляется сам ← радар комнат

Финальный прогон качества · хакатон S26 «чужая боль»

Снято 29.08.2026 12:28 UTC.

Хакатон обещал участникам ровно две вещи в итоге: прошло N из M по приёмочным примерам и вердикт заказчика «решило / не решило». Обе строчки заполняет человек, и машинные метрики их не заменяют — они лишь говорят, где искать. Частичный результат тоже результат, поэтому пустая ось честнее выдуманной.

Отчёт промежуточный, работа идёт. Фаза события: closed. Пересобирается автоматически каждые две минуты вместе с бортом. Человеческие оси заполнены у 0 комнат из 5 — пока они пусты, итоговых чисел здесь нет и быть не может.

Сводная таблица

ккоммитовстроклюдейв mainмимо mainсмерженоверхний авторпризнакиревьюмашинная часть
174+221975293 файлов3/182465%100%85%23 из 30
217+7703341 файлов1/4347%87%42%25 из 30
342+11164784 файлов6/192329%100%74%17 из 30
475+206465149 файлов3/435239%87%89%30 из 30
554+17161727 файлов5/292831%66%78%25 из 30

Комната 1 · входящий хаос → реестр обязательств

Лидер Alexander Kremenets · репозиторий · на месте 4 из 10, заказчиков 2 из 8

Собрано в main: 293 файлов, 1129 кб, 9 модулей, 4 точек входа, 18 связей. Модули: oleg_pipeline·12, oleg_web·11, oleg_engine·7, ·корень·2, core·5, registry·5, tests·4, extract·3, ingest·3.

Сведение: смержено 24, открыто 0, мимо main 3 из 18, максимальное отставание 65 коммитов.

Люди: 5 пишут, верхний автор держит 65%, 0 реплик в обсуждении.

Соответствие: признаков в файлах 100%, ревью по сути 85%, критериев закрыто 8 из 8, пунктов дрейфа 3.

Оси рамки:

Дрейф от задачи:

Вердикт рубрики: Между прошлой проверкой (HEAD 6d53430) и этой main продвинулся ровно на один слитый PR (#23 naive-en-visibility) до 7679eb3. Изменение узкое, но реальное и в верном направлении: ingest/reader.py теперь узнаёт письмо по английскому «From:» наравне с русским «От:» (закрывает конкретный баг классификации английского .eml), а cli.py перестал молчать, когда правила находят 0 обязательств при явном сигнале даты MM/DD/YYYY, который они физически не парсят — печатает предупреждение в stderr вместо тихого пустого реестра, при этом не поднимает ложную тревогу на честных нулевых сценариях. Впервые появился и закоммиченный количественный срез охвата — NAIVE-REPORT.md, честно показывающий 6 из 26 на корпусе gagebt без LLM и объясняющий, почему. Всё это улучшает прозрачность движка, но не решает основную дыру: extract/naive.py остаётся правилами только на русском, T001 на свежем прогоне по-прежнему выдаёт 0 обязательств, а сверка по смыслу так и не подтверждена ни одним живым судейским прогоном — ключа для --judge в среде проверки нет. Все три официальных examples и все 16 приёмочных пунктов проходят живым прогоном на новом HEAD без регрессий. Раскол движков (gagebt ZEH8/engine·pipeline·web невлитые, отдельный oleg_web по умолчанию на втором движке) остался ровно там же, где был — не углубился и не разрешился.

Комната 2 · ответ клиенту по базе

Лидер Dmitry Petrovskiy · репозиторий · на месте 3 из 10, заказчиков 2 из 9

Собрано в main: 41 файлов, 236 кб, 4 модулей, 2 точек входа, 1 связей. Модули: src·18, bot·13, n8n·8, .hermes·2.

Сведение: смержено 3, открыто 0, мимо main 1 из 4, максимальное отставание 12 коммитов.

Люди: 3 пишут, верхний автор держит 47%, 0 реплик в обсуждении.

Соответствие: признаков в файлах 87%, ревью по сути 42%, критериев закрыто 5 из 7, пунктов дрейфа 5.

Оси рамки:

Дрейф от задачи:

Вердикт рубрики: Заявленное окно комнаты (10:00–14:00 CEST) закрылось 13 минут назад, а up/main не сдвигался последние 50+ минут — 34e1c2a фиксируется как финальное состояние. Третий подряд живой прогон на свежем клоне подтвердил ровно те же 46 из 46 офлайн-тестов (19 python-гард + 2 bot.test_gate + 22 JS-порт + 3 bot/run_acceptance). Это единственная комната цикла, где в main появился настоящий генератор черновика из сырого запроса: n8n-пайплайн, где LLM-нода читает {{$json.request}} и реальные вшитые файлы examples/base/*, пишет письмо по системному промпту с полным регламентом (включая порог скидки 10 шт/7%), а затем жёстко проходит через гард с указанием источника на каждый факт — ровно архитектура, которую просит README. Но это по-прежнему верификация вручную написанных фикстур good/bad-*.md, а не доказанный результат самой генерации: OpenAI-нода требует приватного креденшела личного n8n лидера и офлайн не запускается, поэтому ни один из трёх приёмочных примеров так и не подтверждён сквозным прогоном «сырой запрос → черновик → сверка с expected.md». «Единого инструмента» по-прежнему нет: три несвязанных артефакта (python-гард, n8n-пайплайн, крипто-бот) вместо одного, а интеграция гарда с крипто-биржевым ботом сломана по смыслу — гард, жёстко привязанный к базе ТехноСклад, блокирует практически любой настоящий ответ бота. Экспонированный Telegram-токен так и не отозван до самого конца окна. Единственная активность за финальный отрезок — коммит в непринятой и не относящейся к задаче ветке support-bot.

Комната 3 · контент-конвейер по канону

Лидер Matt Gainanov · репозиторий · на месте 8 из 12, заказчиков 2 из 5

Собрано в main: 84 файлов, 365 кб, 7 модулей, 6 точек входа, 0 связей. Модули: judge·14, reels·27, canon-lens·18, report·6, matt·9, digest·8, ·корень·2.

Сведение: смержено 23, открыто 1, мимо main 6 из 19, максимальное отставание 59 коммитов.

Люди: 7 пишут, верхний автор держит 29%, 6 реплик в обсуждении.

Соответствие: признаков в файлах 100%, ревью по сути 74%, критериев закрыто 8 из 8, пунктов дрейфа 4.

Оси рамки:

Дрейф от задачи:

Вердикт рубрики: HEAD up/main не сдвинулся с прошлого круга (8b2eaf6, PR#22 d0716b5 — документационный мёрж README). Полный живой перезапуск на свежем git archive экспорте подтвердил все цифры без единого расхождения: matt accept 3/3, canon-lens 7/7+9/9 (прямой запуск, не pytest), digest 6/6, judge 16/16, report 7/7, report/e2e.py 4/4, reels --no-llm на реальной статье sostav-86369 → 19.2 с в коридоре 15–20 с, silence-right на facts.silence.json → отказ с report.md и кодом 0, без script.md. Состояние комнаты стабильно: README честно признаёт фрагментацию accept-раннеров и статус Matt как резервной, а не основной реализации, но главный риск (право промолчать, тест Григория) по-прежнему не показывается ни в одном из трёх «N из M» раннеров, хотя код отказа рабочий и переподтверждён живым прогоном в этом круге.

Комната 4 · мониторинг → дайджест

Лидер Михаил Яценко · репозиторий · на месте 7 из 10, заказчиков 3 из 6

Собрано в main: 149 файлов, 885 кб, 7 модулей, 2 точек входа, 6 связей. Модули: parsers·28, timelog·6, core·10, diff·6, departments·84, ·корень·1, site·14.

Сведение: смержено 52, открыто 0, мимо main 3 из 43, максимальное отставание 58 коммитов.

Люди: 5 пишут, верхний автор держит 39%, 24 реплик в обсуждении.

Соответствие: признаков в файлах 87%, ревью по сути 89%, критериев закрыто 6 из 8, пунктов дрейфа 5.

Оси рамки:

Дрейф от задачи:

Вердикт рубрики: С прошлого круга up/main не сдвинулся ни на коммит (HEAD 66ccc5f — тот же мерж PR #69, единый раннер приёмки check.py). Живой прогон сейчас подтверждает состояние заново и независимо: свежий git archive refs/remotes/up/main во /tmp, python3 check.py → «прошло 3 из 3», exit code 0. Ядро задачи (диффы, честность источников, парсер карточек, timelog с обоими порогами, пороги K4UR, Excel-дайджест по ТЗ K4UR) не изменилось и подтверждено заново вживую: все пять отделов кухни пересобираются с теми же числами (Бакалея 54/6, Молочка 7/1, Мясо 268/4, Оборудование 5/1, Зелень 6/4 из 5), общий свод 16/17 источников. Открытые непринятые PR (pr/53, pr/58) тоже без движения — ни новых коммитов, ни новых номеров PR не появилось. Все прежние застарелые разрывы сохраняются без изменений: diff/ и core/fallback_diff.py не сведены в один движок из-за несовпадения имени функции в try/except; timelog верно считает, но не выведен на веб-страницу дайджеста; закоммиченный site/index.html на один мерж отстаёт от данных репозитория (49/5/14 против фактических 54/6/17 у Бакалеи, подтверждено прямым git show только что); канал доставки K4UR (почта) не реализован, только Excel-файл лежит ссылкой.

Комната 5 · проверка артефакта до сдачи

Лидер Vadim Kapitanov · репозиторий · на месте 8 из 9, заказчиков 2 из 3

Собрано в main: 27 файлов, 235 кб, 8 модулей, 3 точек входа, 8 связей. Модули: core·7, ·корень·3, runner·2, checkers·5, tools·5, generator·3, anonymizer·1, ui·1.

Сведение: смержено 28, открыто 1, мимо main 5 из 29, максимальное отставание 51 коммитов.

Люди: 7 пишут, верхний автор держит 31%, 7 реплик в обсуждении.

Соответствие: признаков в файлах 66%, ревью по сути 78%, критериев закрыто 2 из 7, пунктов дрейфа 4.

Оси рамки:

Дрейф от задачи:

Вердикт рубрики: Ядро задачи по-прежнему держится, и main не сдвинулся со времени прошлой сверки (HEAD всё тот же dca0818, слит PR #29). Третий подряд живой прогон подтверждает то же самое ещё раз: 16 из 16 по автосверке, и прямые проверки каждого примера показывают это не по якорям, а по факту — 01 находит 8 нарушений без ложных срабатываний на измеримые требования, 02 не путает API_TOKEN_FILE с секретом, 03 не бракует несимметричный допуск, 04 даёт один плейсхолдер на повторного человека с байт-в-байт обратным маппингом, 05 даёт ровно пять точных находок по боли Дениса, 06–11 ловят все пять тихих дефектов litellm. Ровно тот же дефект, что фиксировался на прошлых сверках, подтверждён живым запуском ещё раз и не устранён: на примерах 20–24 модуль agent_platform_config через фолбэк по слову «litellm» подхватывает документ критериев заказчика и выдаёт 7–8 находок шума вместо 1–3 целевых, вплоть до обвинения самого имени заказчика в подмене алфавита. Открытый второй кандидат на исправление (PR #31) не изменился и, по повторной живой проверке, по-прежнему не чинит проблему, а тиражирует её на ранее чистые примеры 06–11 — команда так и не переключилась на рабочего кандидата (PR #30, сужение фолбэка по формату файла), который остаётся тем же несмерженным решением, что и на прошлых сверках. Раннер и собственный selfcheck.py продолжают зелёным светом закрывать эти пять примеров, маскируя ровно то нарушение принципа «ложное срабатывание дороже пропуска», которое заказчик сформулировал как главный критерий приёмки.