feat(game): диалоги в JSON + dialogueRules (чистый анализ графов) + CLI dry-run
- графы диалогов — 6 JSON-файлов в data/dialogues/ (4 пробела + \n),
  реестр dialogues.ts собирается JSON-импортами
- новый data/dialogueRules.ts: чистые checkGraph/analyzeGraph — реестры
  параметрами, одна истина для валидатора, CLI и будущего редактора
- validate.ts делегирует графы в checkGraph; новые инварианты:
  textless-cycle (error), silent-end (warn), string-unknown, item-unknown,
  do-item/do-custom-unknown, quest-stage-unreachable (error)
- CLI npm run dialogues:dry [<id>] — прогон графов через DialogueRunner
  на пресетах состояния (fresh / quest-taken+flowers / quest-done)
- доки: ui-and-dialogue.md (раздел «Графы в JSON и dry-run»), practices.md,
  CLAUDE.md

Co-Authored-By: Claude Code <noreply@anthropic.com>
1 parent ed0f6ba commit 7a2c9121815f885e9ba71923b62c2c12caaaca80
@root root authored 2 hours ago
Showing 16 changed files
View
CLAUDE.md
View
apps/game/src/data/__tests__/dialogueRules.test.ts 0 → 100644
View
apps/game/src/data/dialogueRules.ts 0 → 100644
View
apps/game/src/data/dialogues.ts
View
apps/game/src/data/dialogues/elder_first.json 0 → 100644
View
apps/game/src/data/dialogues/elder_hand_in.json 0 → 100644
View
apps/game/src/data/dialogues/elder_repeat.json 0 → 100644
View
apps/game/src/data/dialogues/trader_after.json 0 → 100644
View
apps/game/src/data/dialogues/trader_first.json 0 → 100644
View
apps/game/src/data/dialogues/trader_repeat.json 0 → 100644
View
apps/game/src/data/validate.ts
View
apps/game/tools/dialogues/dry-run.ts 0 → 100644
View
apps/game/tsconfig.json
View
docs/engine/practices.md
View
docs/engine/ui-and-dialogue.md
View
package.json