# loom_ruleset - the deterministic data-driven ruleset AST interpreter (Rust core).
# The native sibling of the TS ruleset-ast.ts and the Python ruleset_ast.py.
# Builds on loom_math (Pcg32 + floor_div) + loom_snapshot (normalize_tags +
# world_state_hash), so it resolves the same AST + seed to the same mutations and
# the same world-state hash. Pinned by test_vectors/v3_ast_bleed.json.

[package]
name = "loom_ruleset"
version.workspace = true
edition.workspace = true
license.workspace = true
repository.workspace = true
description = "Deterministic data-driven ruleset AST interpreter for the Loom Engine (the Any-System core)."

[dependencies]
serde_json = "1"
# Round-7 audit HIGH: NFC validation on AST property/tag names, mirroring the
# TS assertCleanName NFC guard (instance #5 of the cross-surface NFC class).
unicode-normalization = "0.1"
loom_math = { path = "../loom_math", version = "0.1.2" }
loom_snapshot = { path = "../loom_snapshot", version = "0.1.2" }

[dev-dependencies]
# Test-only: the SRD 5e action-pack golden harness (tests/golden_srd5e_pack.rs)
# drives loom_combat's srd5e_* pure modules alongside this crate's AST executor
# against the shared test_vectors/srd5e_pack_v1.json. Never linked into the
# published crate (path-only dev-dep, stripped on publish).
loom_combat = { path = "../loom_combat" }
