RnD · Линия доказательств Technical R&D
Каталог и оглавление
TECH.IDX RnD/technical/2026-07-25-ai-gm-vertical-slice/README.md raw.md ->

Integrated AI GameMaster vertical slice

  • Status: complete
  • Outcome: partial
  • Started: 2026-07-25
  • Updated: 2026-07-25
  • Research ID: 2026-07-25-ai-gm-vertical-slice

Проверяемый вопрос#

Можно ли в TypeScript выполнить полный turn lifecycle с genre-neutral host-authored content, authoritative rules/RNG, immutable events, private projections, bounded narration и deterministic replay?

Почему решение нужно сейчас#

Отдельные схемы и unit tests не доказывают архитектурную последовательность и совместимость контрактов.

Scope#

  • Knave 1e как attributed mechanical baseline: classless, d20, equipment-led, limited inventory; без копирования setting/text.
  • Genre-neutral original rules profile.
  • Original non-canonical sci-fi comedy fixture как доказательство non-fantasy.
  • Отдельный минимальный runtime Adventure/Map bundle; dedicated authoring contracts исследованы параллельно, но их interop compiler сюда не подключён.
  • Все 14 шагов vertical slice из session brief.
  • CLI demo, adversarial suite и local cost-quality benchmark.

Non-goals#

  • Production UI, network server, database, STT/TTS/image generation.
  • Универсальное автоматическое качество любой истории.
  • Real LLM и платные provider calls.
  • Knave/D&D compatibility branding.

Критерии успеха#

ID Обязательный критерий Ожидаемое поведение Способ проверки
AC-01 Сквозной turn выполняет заданный порядок Commit существует до narration npm run technical:demo
AC-02 Replay детерминирован final и replay SHA-256 совпадают demo + tests
AC-03 Contract/content/map валидируются Broken refs/unreachable/invalid schema rejected technical tests
AC-04 Privacy и invalid-state invariants 0 corpus leaks и invalid mutations adversarial suite
AC-05 Reproducible clean-checkout command npm ci && npm run check full verification
AC-06 Benchmark честно маркирует границы Local comparison produced; real quality/cost = Unknown benchmark report

Рабочие гипотезы#

  • Hypothesis H-01: pure reducers, recorded RNG outcomes and append-only events достаточно для deterministic replay.
  • Hypothesis H-02: отделение rules profile от content contracts позволяет одному kernel запускать host-authored не-фэнтезийный fixture.

Материалы#

Итог#

GO для deterministic kernel boundary, но общий outcome — partial. Один и тот же strict TypeScript vertical slice выполнен Node.js 24.14.0 и Bun 1.3.6: authoritative event был записан до narration, live/replay SHA-256 совпал (394ba5c11df11b9ccd4f6e76b3b14d08fcc007df32e3f788064a055ccb7a0f94), 16/16 adversarial cases не изменили state и не раскрыли secrets, а 1 000-event full/checkpoint replay дал одинаковый hash.

Локальный cost-quality harness сократил только synthetic input-token proxy с 162 515 до 34 160 (78.9804%). Это не доказательство экономии или non-inferiority: real tokens, retries, narration quality и USD cost не измерялись.

Этот slice не принимает output dedicated Adventure/Map authoring prototypes: он загружает собственные минимальные runtime contracts. Поэтому HostPreferences → authoring contracts → runtime state → first turn как единый pipeline пока не доказан.

Ограничения#

Один fixture доказывает interface shape, но не полноту жанров или narrative quality. Раздельные authoring/runtime schemas не доказывают interoperability.

Следующее решение#

Сначала унифицировать authoring/runtime contracts в versioned package либо реализовать явный compiler/mapping и end-to-end test. Затем переносить kernel в production-design package. До real-model benchmark заранее утвердить versioned genre-diverse fixtures, narrative rubric, non-inferiority margin, exact model IDs, budget cap и redaction policy.