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.