Map Contract и статическая пространственная согласованность
- Status:
complete - Outcome:
pass - Started: 2026-07-25
- Updated: 2026-07-25
- Research ID:
2026-07-25-map-spatial-consistency
Проверяемый вопрос#
Можно ли одним жанрово-нейтральным MapContract описать regions, locations и
направленные edges так, чтобы до запуска сессии обнаруживать битые ссылки и
недостижимые обязательные узлы, а во время исполнения детерминированно
проверять movement, travel cost, obstacles, line of sight, fog of war,
discovery и private locations?
Почему решение нужно сейчас#
LLM не имеет права перемещать персонажа через отсутствующую связь, раскрывать скрытую локацию или обходить obstacle. Rules/state ядру нужен отдельный authoritative spatial contract и projection boundary, не зависящие от текста narration и жанра приключения.
Scope#
MapContractдля regions, locations, coordinates и node/edge topology.- Directed/bidirectional movement, typed travel cost и obstacle requirements.
- Static reachability от start nodes до обязательных locations.
- Broken-reference validation для regions, endpoints, scenes, encounters и triggers.
- Discovery state, fog projection и private location authorization.
- Direct-edge line-of-sight check без утечки скрытых узлов.
- Оригинальный sci-fi comedy fixture, согласованный по IDs с тестовым adventure, но не являющийся product canon.
Non-goals#
- Tactical grid, continuous geometry, pathfinding around polygons or physics.
- Production authorization, persistence or multiplayer synchronization.
- Автоматическая генерация красивой карты.
- Выбор fantasy setting, ruleset или канонического приключения.
- Semantic проверка внешних scene/encounter/trigger definitions: validator получает только их authoritative ID index.
Критерии успеха#
Критерии зафиксированы до реализации prototype.
| ID | Обязательный критерий | Порог или ожидаемое поведение | Способ проверки |
|---|---|---|---|
| MC-01 | Валидный contract | Original sci-fi fixture даёт 0 validation issues |
node --test prototype/map.test.ts |
| MC-02 | Broken references | Неизвестные region, endpoint, scene, encounter и trigger IDs отклоняются стабильными кодами | Негативные автотесты |
| MC-03 | Reachability | Каждый requiredReachableLocationId достижим из start nodes по потенциально проходимым directed edges |
Graph validation + автотест |
| MC-04 | Movement | Edge direction, obstacle flags, authorization и travel cost проверяются до move | Автотест evaluateMove |
| MC-05 | Fog/privacy | Undiscovered и неразрешённые private nodes/edges отсутствуют в player projection | Две viewer projections |
| MC-06 | LOS | LOS существует только по разрешённому direct edge с lineOfSight: clear |
Автотест |
| MC-07 | Content binding | Scene/encounter/trigger refs сверяются с переданным authoritative index | Негативный автотест |
| MC-08 | Non-canonical provenance | Fixture original, borrowed-IP-free и isCanonical: false |
Автотест |
Рабочие гипотезы#
- Hypothesis H-01: adjacency graph с typed edges достаточен для первого vertical slice без tactical grid. Подтверждение: MC-03–MC-06.
- Hypothesis H-02: projection до narration предотвращает утечку private и hidden location IDs. Подтверждение: MC-05.
- Hypothesis H-03: opaque content IDs связывают карту с adventure без передачи map validator контроля над сюжетом. Подтверждение: MC-02 и MC-07.
Материалы#
- Исследование и evidence log
- Техническое решение и запуск
- Проверка и итог
prototype/— исполнимый артефакт
Итог#
pass: directed topology обнаруживает broken refs и недостижимые required
nodes, movement применяет direction/obstacle/authorization/travel cost, а
projection не раскрывает hidden/private locations и edges. Suite: 6/6; demo:
0 issues. Основание: E-003–E-008.
Ограничения#
- Static reachability считает conditional obstacle потенциально проходимым; это не доказывает, что конкретная party получит нужный flag.
- Direct-edge LOS не моделирует углы, высоту или dynamic occlusion.
- Layout coordinates предназначены для отображения, а не для физики.
- Fixture не является канонической картой продукта.
Следующее решение#
Принять topology contract для первого rules/state replay. Grid/geometry study создавать только если подтверждённый gameplay потребует continuous LOS, tactical distance или collision.