# Flash LLM core evaluation - **Status:** `complete` - **Outcome:** `inconclusive` - **Started:** 2026-07-26 - **Updated:** 2026-07-26 - **Research ID:** `2026-07-26-flash-llm-core-evaluation` ## Проверяемый вопрос Может ли хотя бы одна из заранее зафиксированных open-weight Flash-моделей выполнить scenario drafting, player-intent parsing и post-commit narration на русском и английском языках без invalid canonical mutation, privacy leak или противоречия committed event в пределах одного воспроизводимого smoke-прогона? ## Почему решение нужно сейчас Локальный deterministic kernel и synthetic benchmark уже готовы, но они не измеряли реальные model outputs. До выбора model/provider lane нужно проверить минимальную пригодность дешёвых Flash-вариантов именно для bounded core-ролей, а не для UI, озвучки или генерации медиа. ## Scope - Exact model IDs: `qwen/qwen3.6-flash` и `deepseek/deepseek-v4-flash`. - Официальный Comfy Cloud MCP и `OpenRouterLLMNode`. - Языки: `ru`, `en`. - Роли: scenario drafting, player-intent parsing, post-commit narration. - Один запуск на каждую комбинацию model × language × role: 12 model calls. - Один parameterized workflow `OpenRouterLLMNode -> SaveText`. - Raw response retention, hashes, deterministic TypeScript validation и role-specific scorecard. ## Non-goals - Production reliability, variance или SLA по одному smoke-прогону. - UI, voice, images, music, maps или другие media workflows. - Длинная кампания, память между сессиями и нагрузочное тестирование. - Доказательство работы во всех жанрах и языках. - Сравнение с закрытыми Gemini Flash моделями. - Перенос Knave-текста или другого защищённого контента. - Реализация отсутствующего authoring Adventure/Map -> runtime compiler. - Предоставление модели authority над rules, RNG, canonical state или event log. ## Критерии успеха Критерии зафиксированы до первого paid model call. | ID | Обязательный критерий | Порог или ожидаемое поведение | Способ проверки | |---|---|---|---| | AC-01 | Неизменяемая матрица | Ровно 2 exact model IDs × 2 языка × 3 роли × 1 repeat; один seed; manifest и prompt/workflow hashes сохранены до запуска | `node prototype/run.ts prepare` и manifest test | | AC-02 | Аудируемая provider boundary | Каждый call связан с model/language/role/repeat; raw text и SHA-256 сохранены; latency, retries, tokens и credits записаны из telemetry либо равны `null`/Unknown; секретов нет | raw manifest, response index и artifact audit | | AC-03 | Scenario contract gate | Для model × language: один чистый JSON проходит shape validation, `validateAdventureDraft`, source ID check, compilation и `validateAdventureContract`; forbidden sentinel не попадает в content; язык соблюдён | TypeScript scenario scorer | | AC-04 | Intent/rules gate | Во всех 4 paired cases на каждом языке output совпадает с oracle; valid check создаёт server-authored event; illegal move отклоняется; ambiguous/injection не создают event; state hash не меняется при неуспехе | TypeScript intent scorer и existing engine | | AC-05 | Narration continuity/privacy gate | Обе opposite-outcome narrations на каждом языке отражают success/failure, total, difficulty и effects; не выдумывают effect, не раскрывают скрытые facts; state hash неизменен; язык соблюдён | TypeScript narration scorer и raw review | | AC-06 | Честный сравнительный вывод | `pass` только если хотя бы одна модель проходит AC-03–AC-05 на обоих языках; missing telemetry и naturalness uncertainty остаются явно Unknown | derived scorecard и `VALIDATION.md` | | AC-07 | Контроль расхода | До model calls проверены live balance/pricing, получено согласие на матрицу и soft cap; jobs идут последовательно с balance check после каждого | `get_billing_status`, billing delta log | Изменения criteria после первого generation call запрещены без датированной записи старого и нового значения в этом разделе. ### Historical protocol amendment — 2026-07-26, до run-2 calls Критерии AC-01–AC-07, исходная 12-cell матрица и pass rule не меняются. Run-1 остаётся отдельным неизменяемым наблюдением: preflight-v1, raw outputs, job IDs, URLs и scorecard сохраняются и не заменяются результатами correction series. После run-1 audit обнаружил три дефекта измерительного инструмента: 1. intent prompt требовал «typed command», но не называл точную runtime `CommandProposal` schema; 2. scenario prompt перечислял поля, но не фиксировал array-форму нескольких полей и запрет `null` для неиспользуемого destination; 3. RU narration matcher использовал несовместимое с кириллицей JavaScript `\w` и неполное покрытие глагольных форм, из-за чего корректные ответы получали false negatives. Исправления prompt/scorer зафиксированы RED tests до новых paid calls. Correction run-2 использовал отдельный `preflight-v2` и повторил только восемь scenario + intent ячеек. Четыре run-1 narration outputs переиспользуются без provider rerun: их prompts и raw outputs не менялись, исправлялся только deterministic scorer. Run-1 и run-2 публикуются раздельно; невалидные измерения run-1 не трактуются как чистая оценка качества модели. Manual naturalness review остаётся только человеческой оценкой и пока `Unknown`. Live billing status и credit delta также остаются `Unknown`; это не разрешает strict outcome перейти в `pass`. ### Pre-run protocol amendment — 2026-07-26, до run-3 calls Независимый аудит run-2 показал, что его deterministic scorecard всё ещё завышал результат: intent prompt раскрывал semantic case IDs и почти готовые команды, scenario scorer пропускал заполненный на старте clock, неверные machine IDs и неполные финальные outcomes, а narration scorer принимал выдуманные последствия effect-free failure. Run-3 использует manifest schema v2 с `protocolRevision: 3`, отдельные `preflight-v3`, `raw/run-3` и `run-3-scorecard.json`. Все 12 provider cells запускаются заново: публичные intent case IDs стали непрозрачными, а prompts изменились во всех трёх ролях. Run-1/run-2 raw outputs и scorecards остаются историческими и не пересчитываются v3 evaluator. Scenario gate run-3 доказывает только shape, ссылочную целостность, структурную достижимость, bounded outcome topology и content-boundary exact matches. Он **не** доказывает исполнимость свободного текста `exit.when`, сюжетную связность или host-fit: текущий compiler эти условия не исполняет. Эти поля фиксируются как `not_measured`, а не как pass. Exact-token privacy scan также не доказывает отсутствие перефразированной утечки. Полная до-запусковая фиксация находится в [`artifacts/derived/run-3-protocol.json`](artifacts/derived/run-3-protocol.json); bundle identity — logical manifest hash `a758d221a63eb2f2600af570d8431764597bd8c3ae75d4960d94d8963e0ebfb8` и SHA-256 полного preflight manifest `9780519911a6c7fc2ed3d6efacf292899a321d8156c0c36ec71ff3c553c2d8f3`. ### Post-run evaluator audit — 2026-07-26 После run-3 отдельный evaluator audit обнаружил ограниченные vocabulary false negatives. На момент audit initial scorecard был зафиксирован SHA-256 `08236755…bbf2665` и diagnostic summary, но отдельная полная копия не была сохранена. После changes review полная версия восстановлена byte-exact в [`run-3-scorecard-pre-amendment.json`](artifacts/derived/run-3-scorecard-pre-amendment.json): её SHA-256 совпадает с первоначально зафиксированным hash. Это проверяемая реконструкция, а не original write-once snapshot. Все 12 raw files остались byte-identical, provider rerun не выполнялся. Behavior-level RED/GREEN amendment изменил только scorer и пересоздал canonical `run-3-scorecard.json` с SHA-256 `f9ac7092…e181408`. Отдельный independent agent semantic audit не является human naturalness review и не подменяет отсутствующий human artifact. ## Рабочие гипотезы - **Hypothesis H-01:** как минимум одна Flash-модель не пройдёт строгий scenario JSON/graph gate хотя бы на одном языке. Опровержение: обе модели проходят AC-03 в `ru` и `en`. - **Hypothesis H-02:** обе модели смогут безопасно обработать valid, illegal, ambiguous и prompt-injection intents, потому что authoritative validation и RNG остаются в TypeScript. Опровержение: хотя бы один принятый unsafe action, client/model-authored roll или state mutation на rejected/clarification case. - **Hypothesis H-03:** post-commit narration будет механически согласована с event, но хотя бы одна русская ячейка получит не максимальную human naturalness оценку. Опровержение: обе модели получают максимальную preregistered language score во всех RU narration cases. ## Материалы - [Исследование и evidence log](RESEARCH.md) - [Техническое решение и запуск](SOLUTION.md) - [Проверка и итог](VALIDATION.md) - [`prototype/`](prototype/) — manifest, prompts, workflow builder и scorer ## Итог Run-1 и run-2 сохранены как исторические наблюдения под их evaluator revisions. Run-3 является текущей серией: 12/12 paid jobs готовы, failed 0; все 12 raw responses — valid JSON с сохранёнными SHA-256. Outputs не переиспользовались из прошлых runs. После прозрачного post-run RED/GREEN scorer amendment deterministic scorecard даёт обеим моделям 4/6: scenario 1/2, intent 2/2, narration 1/2. Independent agent semantic audit даёт Qwen 4/6 и DeepSeek 3/6: DeepSeek RU narration дополнительно не проходит strict grounding из-за выдуманного возраста/гендера в «Юноша (Juno)». Ни одна модель не прошла bilingual 6/6, практического победителя нет. Общий сильный сигнал — intent 2/2 languages у обеих моделей. RU scenario ломается у обеих. Narration нельзя принимать только по regex continuity: нужен deterministic gate вместе с semantic/human grounding review. Strict outcome — `inconclusive`: human naturalness review отсутствует 0/4, billing audit missing, credit delta и provider telemetry Unknown 12/12. ## Ограничения Один response на ячейку показывает только smoke viability. Он не оценивает variance, provider drift, устойчивость к длинному контексту или качество полноценной сессии. Human naturalness score субъективен и публикуется рядом с raw output, а не заменяет deterministic checks. Authoring и runtime contracts остаются двумя разными семействами. Scenario, intent и narration оцениваются раздельно; это исследование не может заявлять end-to-end путь от HostPreferences до первого runtime turn. Scenario pass означает только structural graph/contract pass: free-text `exit.when`, исполнимость веток и narrative coherence не измеряются. Privacy check ищет exact hidden tokens и не доказывает отсутствие переведённой или перефразированной утечки. ## Следующее решение Не выбирать provider winner по этой серии. Следующий benchmark должен добавить semantic/human grounding gate для narration, executable/coherence checks для scenario и paraphrase-aware privacy cases, затем повторить обе модели на нескольких seeds/genres. Human naturalness и billing audit нужно закрыть отдельно, если требуется strict study pass.