[package]
name = "antigen"
description = "Structural memory of failure-classes for Rust. Make implicit immunity explicit."
version.workspace = true
edition.workspace = true
rust-version.workspace = true
authors.workspace = true
license.workspace = true
repository.workspace = true
homepage.workspace = true
readme = "README.md"
keywords.workspace = true
categories.workspace = true
exclude = [
    "tests/**",
    "proptest-regressions/**",
]

[lib]
path = "src/lib.rs"

# The `antigen-poxparty` feature activates structural isolation for
# `#[poxparty]` sites. Per ADR-023: this feature MUST NOT be in the default
# feature set — production builds must not accidentally enable pox-party
# exercise code. Enable it in `[dev-dependencies]` or a dedicated feature gate.
[features]
# The antigen-poxparty feature propagates to antigen-macros so the proc-macro
# expansion environment receives CARGO_FEATURE_ANTIGEN_POXPARTY. Without this
# propagation, the macro's env-var check fires even when the adopter enables
# the feature on their antigen dependency.
antigen-poxparty = ["antigen-macros/antigen-poxparty"]

[lints]
workspace = true

[dependencies]
antigen-macros = { version = "=0.4.0-beta.1", path = "../antigen-macros" }
antigen-fingerprint = { version = "=0.4.0-beta.1", path = "../antigen-fingerprint" }
# `parser` feature wires the substrate-witness syntax parser into scan so
# #[presents(..., requires = ...)] discovery does not depend on macro-emitted
# doc markers (see CHANGELOG).
antigen-attestation = { version = "=0.4.0-beta.1", path = "../antigen-attestation", features = ["parser"] }
syn = { workspace = true }
quote = { workspace = true }
proc-macro2 = { workspace = true, features = ["span-locations"] }
walkdir = { workspace = true }
serde = { workspace = true }
serde_json = { workspace = true }
chrono = { version = "0.4", default-features = false, features = ["std", "clock"] }

[build-dependencies]
# The build script parses antigen's own `src/stdlib/*.rs` to compile-in the
# bundled stdlib catalog (v0.4 E0). `syn` "full" gives `parse_file` +
# `parse_nested_meta`; no proc-macro context is needed (this is an ordinary
# build-time parse, not macro expansion).
syn = { workspace = true }
proc-macro2 = { workspace = true }

[dev-dependencies]
proptest = { workspace = true }
tempfile = { workspace = true }
