[package]
name = "pr4xis"
version = "0.23.1"
edition = "2024"
authors = ["i-am-logger"]
description = "Prove your domain is correct — ontology-driven rule enforcement with category theory, logical composition, and runtime state machines"
license = "CC-BY-NC-SA-4.0"
repository = "https://github.com/i-am-logger/pr4xis"
homepage = "https://github.com/i-am-logger/pr4xis"
keywords = ["ontology", "category-theory", "enforcement", "state-machine", "formal-methods"]

[features]
default = ["std"]
std = []
codegen = ["std", "dep:quick-xml", "dep:serde", "dep:serde_json"]

[dependencies]
hashbrown = { version = "0.17", default-features = false, features = ["default-hasher"] }
linkme = "0.3"
paste = "1"
pr4xis-derive = { version = "0.23.1", path = "../pr4xis-derive" }
quick-xml = { version = "0.40", features = ["serialize"], optional = true }
serde = { version = "1", features = ["derive"], optional = true }
serde_json = { version = "1", optional = true }

# Lints are inlined here (not inherited from `[workspace.lints]`) so the
# crate parses cleanly when unpacked standalone — e.g. crate2nix vendors
# each member into its own /nix/store path without the workspace root,
# and `cargo publish --verify` does the same in `target/package/`.
[lints.rust]
dead_code = "deny"
unused_imports = "deny"
unused_variables = "deny"
unused_must_use = "deny"

[lints.clippy]
todo = "deny"
unimplemented = "deny"
unreachable = "deny"

[dev-dependencies]
proptest = "1.11"
