SpecEngine
Ограниченный JSON DSL — язык событийных правил старого data-engine. Исходники: backend/crates/adapters/src/spec_engine/. Новые GameRun-механики реализуются через GameMechanic; этот DSL не заменяет серверный расчёт поля.
| Модуль | Назначение |
|---|---|
| spec.rs | GameplaySpec: state, обработчики событий, миграции |
| interpreter.rs | Применение событий, внутренний emit, complete_when, сверка score |
| validate.rs | Проверка payload и контракта спецификации |
| schemas/gameplay_spec.schema.json | JSON Schema |
Операции DSL v2: set, add, emit, grade_indexed, match_list_id. Условия: eq, neq, gt, gte, lt, lte, count_gte. complete_when приводит к session_completed. XP берётся из spec/config. Native builtins level_complete и booster_extra_moves сохраняют серверную сверку score; они не обычные декларативные операции.
Для старого data-шаблона нужен manifest/spec и соответствующий клиентский bundle. Новые игры создаются в games/runtime и games/<механика>, с Rust-модулем механики, а не в старых widget/templates. Перед реализацией — текущий PLAN.md.
cd backend
cargo test -p playflow-adapters spec_engine