Research: typed AI GameMaster orchestration
Baseline#
До центрального vertical-slice prototype в репозитории было архитектурное
описание, но не было executable adapter boundary, projection builder или
проверки порядка commit → narration. Этот RED baseline сохранён как E-003.
Текущий candidate — shared implementation в соседнем исследовании, а не
дублированный код внутри этой папки.
Метод#
- Проследить shared flow
projection → proposal → kernel → commit → projection → narration. - Запустить accepted demo и сравнить committed/narrated state versions, event count и replay hashes.
- Запустить versioned adversarial corpus и проверить injection/private categories, mutation и leakage rates.
- Проверить adapter metadata и отсутствие разрешённого real provider path.
- Выполнить TypeScript gate и полный central technical test suite.
Реестр доказательств#
| ID | Тип | Описание | Источник, путь или команда | Дата или версия |
|---|---|---|---|---|
| E-001 | Fact | PRD запрещает LLM быть authoritative state service | RnD/docs/prd/2026-07-22-global-party-ai-rpg.md, AI GameMaster Contract |
2026-07-24 |
| E-002 | Fact | runTurn строит participant projection до intent adapter, передаёт proposal в kernel и вызывает narrator только с committed event и post-commit projection |
../2026-07-25-ai-gm-vertical-slice/prototype/src/orchestrator.ts |
working tree at 68582c97… |
| E-003 | Measurement | RED suite до central implementation завершалась ERR_MODULE_NOT_FOUND |
исторический npm run test:technical |
2026-07-25T01:20+07:00 |
| E-004 | Measurement | Wrapper: state/narration version 1, event count 1, replay match true, private projection leakage false |
node RnD/technical/2026-07-25-ai-gm-orchestration/prototype/verify.ts |
2026-07-25T01:31+07:00 |
| E-005 | Measurement | Wrapper: 16 adversarial cases, 0 failures, invalid transition rate 0, private leakage rate 0 |
та же команда | 2026-07-25T01:36+07:00 |
| E-006 | Measurement | Wrapper: adapter fake_local, realProviderCalls: 0, provider status requires_explicit_user_permission |
та же команда | 2026-07-25T01:31+07:00 |
| E-007 | Measurement | Central vertical-slice suite: 10 tests passed, 0 failed | node --test RnD/technical/2026-07-25-ai-gm-vertical-slice/prototype/tests/*.test.ts |
Node 24.14.0; 2026-07-25 |
| E-008 | Measurement | Strict root typecheck завершился без diagnostics | npm run typecheck |
TypeScript 7.0.2; 2026-07-25 |
| E-009 | Measurement | Integrated demo status pass: state version 1, replay hashes equal, private leakage false, adversarial 16/0 |
npm run technical:demo |
2026-07-25T01:41+07:00 |
| E-010 | Measurement | Expanded technical suite: 41 tests passed, 0 failed | npm run test:technical |
Node 24.14.0; 2026-07-25 |
Журнал экспериментов#
| Время | Изменение или попытка | Наблюдение | Artifact или evidence ID | Вывод |
|---|---|---|---|---|
| 2026-07-25T01:20:00+07:00 | Запущены pre-implementation tests | 3 test files завершились ERR_MODULE_NOT_FOUND для ещё не созданного prototype |
E-003 |
RED подтверждён |
| 2026-07-25T01:31:00+07:00 | Запущен strengthened study wrapper | Все boundary/privacy/provider assertions прошли | E-004–E-006 |
H-01 подтверждена в fake-adapter scope |
| 2026-07-25T01:40:00+07:00 | Запущены central tests и typecheck | 10/10 tests; typecheck exit 0 | E-007, E-008 |
Shared implementation согласована с wrapper |
| 2026-07-25T01:41:00+07:00 | Запущен integrated demo | Status pass; canonical/replay hashes совпали | E-009 |
Сквозной CLI подтверждает wrapper evidence |
| 2026-07-25T01:44:00+07:00 | Запущен expanded technical suite | 41/41 pass | E-010 |
Независимые study tests не сломали boundary |
Выводы#
- Measurement: commit предшествует narration: один committed event породил
state version
1, и narrator получил version1. Основание:E-004. - Measurement: injection и private projection cases не мутировали state и
не раскрыли forbidden context. Основание:
E-005. - Inference: capability separation переводит model output в
untrusted proposal data, но это доказано только с deterministic fake adapter.
Основание:
E-002,E-004–E-006.
Рассмотренные альтернативы#
| Подход | Что проверили | Почему не выбран | Evidence |
|---|---|---|---|
| LLM напрямую возвращает новый state | Сопоставление с PRD | Нарушает source-of-truth и replay contract | E-001 |
| Один свободный agent со всеми tools | Threat model | Нельзя локально доказать least privilege | E-001 |
| Typed capability-separated adapters | Shared prototype + wrapper + adversarial suite | Выбран: boundary исполним и локально проверяем | E-002, E-004–E-008 |
Неизвестные#
- Unknown: structured-output reliability, latency, retries и narration quality реальных моделей до разрешённого provider benchmark.
- Unknown: provider-side logging, retention и prompt-injection behavior до выбора конкретного provider/model и data policy.