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

Генерация Adventure Contract из HostPreferences и AdventureDraft

  • Status: complete
  • Outcome: pass
  • Started: 2026-07-25
  • Updated: 2026-07-25
  • Research ID: 2026-07-25-adventure-contract-generation

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

Можно ли детерминированно объединить недоверенный, жанрово-нейтральный HostPreferences и предложенный planner-ом AdventureDraft в исполнимый AdventureContract, который:

  • отделяет пожелания хоста от канонических story facts;
  • задаёт сцены, ветвления, triggers, clocks, endings и fail-forward;
  • ограничивает импровизацию модели;
  • отклоняет битые ссылки и тупиковые failure-переходы;
  • не предполагает fantasy, D&D, Knave или чужой IP?

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

AI GameMaster не может сочинять канон во время применения хода. До интеграции rules/state ядра нужен формат, который превращает творческий ввод хоста в версионированный и проверяемый сценарный граф. Без этой границы невозможно доказать, что narration не меняет факты, условия финала или доступ к секретам.

Scope#

  • Контракты HostPreferences, AdventureDraft и AdventureContract.
  • HostPreferences содержит только творческий brief, session envelope и content boundaries; сцены и факты остаются в неавторитетном draft.
  • Детерминированный compile boundary без LLM и внешних сервисов.
  • Story facts с visibility и запретом прямой мутации.
  • Characters, scenes, typed exits, triggers, clocks и ending states.
  • Fail-forward для каждого failure exit.
  • Improvisation envelope, защищающий canonical surfaces.
  • Проверка ссылочной целостности и достижимости сцен/финалов.
  • Оригинальный sci-fi comedy fixture как доказательство non-fantasy support.

Non-goals#

  • Генерация художественно качественного сценария моделью.
  • Выбор production ruleset, balance, combat math или dice probabilities.
  • Product canon: fixture не является канонической игрой или приключением.
  • Проверка map topology; она вынесена в соседнее исследование.
  • Заимствование сеттингов, персонажей, терминов или модулей третьих лиц.

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

Критерии зафиксированы до реализации prototype.

ID Обязательный критерий Порог или ожидаемое поведение Способ проверки
AC-01 Валидный genre-neutral compile Original sci-fi comedy preferences + draft компилируются с 0 validation issues node --test prototype/adventure.test.ts
AC-02 Determinism Одинаковый input даёт глубокое равенство contract и одинаковый SHA-256 Автотест с двумя независимыми compile
AC-03 Referential integrity Неизвестные fact, scene, clock, character и ending IDs в draft/contract отклоняются структурированными кодами Негативные автотесты
AC-04 Fail-forward Каждый failure exit имеет consequence и ведёт в следующую сцену либо ending Graph validation + автотест
AC-05 Reachability Все сцены и endings достижимы из единственной opening scene Graph validation + автотест
AC-06 Bounded improvisation Contract запрещает narration менять story facts, rules, map topology, visibility и ending conditions Автотест protected surfaces
AC-07 Non-canonical provenance Fixture маркирован как original test fixture и isCanonical: false Автотест provenance
AC-08 Boundary rejection Пустые обязательные host fields, невалидный session envelope и битый planner draft не компилируются Негативные автотесты обеих input boundaries

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

  • Hypothesis H-01: typed graph и runtime validator делают битые ссылки и dead-end failures наблюдаемыми до запуска сессии. Подтверждение: AC-03–AC-05.
  • Hypothesis H-02: genre-specific content можно полностью оставить в данных, а compiler сохранить genre-neutral. Подтверждение: AC-01 и отсутствие fantasy/ruleset констант в compiler.
  • Hypothesis H-03: явный improvisation envelope позволяет LLM описывать подтверждённые события, не расширяя канон. Prototype проверяет структуру envelope, но не качество реальной модели.

Материалы#

Итог#

pass: genre-neutral boundary детерминированно компилирует high-level host brief и original sci-fi comedy planner draft, отклоняет исследованные broken refs/dead-end failures и защищает canonical surfaces от narration. Suite: 7/7; demo: 0 issues; SHA-256 3b9c78e89119c4681f4e7570131f0f5d0b993b4e1d612c822bf473b577d2c21a. Основание: E-003–E-008.

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

  • Валидный граф не доказывает, что история интересна или помещается в timebox.
  • Свободные строки не проходят semantic moderation или fact checking.
  • SHA-256 подтверждает одинаковую сериализацию, но не юридические права.
  • Runtime prototype проверен на Node.js 22.14 type stripping и не является production package.

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

Принять boundary как candidate input для content/map validator и rules-state vertical slice; перенос выполнить отдельной production-задачей, а fixture оставить только тестовым.