2026-02-12 09:13:50 +00:00
|
|
|
[package]
|
|
|
|
|
name = "simulation"
|
|
|
|
|
version = "0.1.0"
|
|
|
|
|
edition = "2024"
|
2026-05-21 19:48:02 +00:00
|
|
|
build = "build.rs"
|
2026-02-12 09:13:50 +00:00
|
|
|
|
2026-05-21 19:48:02 +00:00
|
|
|
[lib]
|
|
|
|
|
path = "src/lib.rs"
|
|
|
|
|
|
|
|
|
|
[[bin]]
|
|
|
|
|
name = "sim-driver"
|
|
|
|
|
path = "src/bin/sim-driver.rs"
|
|
|
|
|
|
|
|
|
|
[[bin]]
|
|
|
|
|
name = "sim-detector"
|
|
|
|
|
path = "src/bin/sim-detector.rs"
|
|
|
|
|
|
|
|
|
|
[[bin]]
|
|
|
|
|
name = "lint-deterministic"
|
|
|
|
|
path = "src/bin/lint-deterministic.rs"
|
2026-02-12 09:13:50 +00:00
|
|
|
|
|
|
|
|
[dependencies]
|
|
|
|
|
serde = { version = "1", features = ["derive"] }
|
|
|
|
|
serde_json = "1"
|
2026-05-21 19:48:02 +00:00
|
|
|
sha2 = "0.10"
|
|
|
|
|
toml = "0.8"
|
|
|
|
|
|
|
|
|
|
[build-dependencies]
|
|
|
|
|
# The runtime surface descriptor is derived from `src/runtime/mod.rs`
|
|
|
|
|
# at build time. `surface.lock` records the expected SHA-256; a trait
|
|
|
|
|
# edit that does not also update the lock fails `tests/surface_locked.rs`.
|
|
|
|
|
syn = { version = "2", features = ["full", "parsing"] }
|
|
|
|
|
quote = "1"
|
2026-02-12 09:13:50 +00:00
|
|
|
|
|
|
|
|
[dev-dependencies]
|
2026-05-21 19:48:02 +00:00
|
|
|
# Tests use the production post-processor (TESTING_SPEC §7.1) and
|
|
|
|
|
# the in-memory tar+gzip helpers needed to feed an on-disk sim
|
|
|
|
|
# bundle into it.
|
|
|
|
|
distribution = { path = "../distribution", features = ["iroh", "collector"] }
|
|
|
|
|
flate2 = "1"
|
|
|
|
|
tar = "0.4"
|
|
|
|
|
# Parity-bar t_facade re-derives the surface from runtime source to
|
|
|
|
|
# catch tampering with build.rs.
|
|
|
|
|
syn = { version = "2", features = ["full", "parsing"] }
|
|
|
|
|
quote = "1"
|
|
|
|
|
|
|
|
|
|
[features]
|
|
|
|
|
# `_facade-test` is the default marker that lets `cargo test -p
|
|
|
|
|
# simulation` build the crate without picking a backend. It is
|
|
|
|
|
# stripped by `--no-default-features`, which then trips the
|
|
|
|
|
# neither-feature const-panic in `src/runtime/mod.rs`.
|
|
|
|
|
default = ["_facade-test"]
|
|
|
|
|
# Mutually exclusive — exactly one selects the active `runtime::facade()`.
|
|
|
|
|
facade-prod = []
|
|
|
|
|
facade-sim = []
|
|
|
|
|
_facade-test = []
|
|
|
|
|
|
|
|
|
|
[[test]]
|
|
|
|
|
name = "corpus_loads"
|
|
|
|
|
path = "tests/corpus_loads.rs"
|
|
|
|
|
|
|
|
|
|
[[test]]
|
|
|
|
|
name = "surface_locked"
|
|
|
|
|
path = "tests/surface_locked.rs"
|
|
|
|
|
|
|
|
|
|
[[test]]
|
|
|
|
|
name = "t_determinism"
|
|
|
|
|
path = "tests/parity-bar/t_determinism.rs"
|
|
|
|
|
|
|
|
|
|
[[test]]
|
|
|
|
|
name = "t_replay"
|
|
|
|
|
path = "tests/parity-bar/t_replay.rs"
|
|
|
|
|
|
|
|
|
|
[[test]]
|
|
|
|
|
name = "t_facade"
|
|
|
|
|
path = "tests/parity-bar/t_facade.rs"
|
|
|
|
|
|
|
|
|
|
[[test]]
|
|
|
|
|
name = "t_same_binary"
|
|
|
|
|
path = "tests/parity-bar/t_same_binary.rs"
|
|
|
|
|
|
|
|
|
|
[[test]]
|
|
|
|
|
name = "t_schema_coverage"
|
|
|
|
|
path = "tests/parity-bar/t_schema_coverage.rs"
|
|
|
|
|
|
|
|
|
|
[[test]]
|
|
|
|
|
name = "t_round_trip"
|
|
|
|
|
path = "tests/parity-bar/t_round_trip.rs"
|
|
|
|
|
|
|
|
|
|
[[test]]
|
|
|
|
|
name = "t_causality"
|
|
|
|
|
path = "tests/parity-bar/t_causality.rs"
|
2026-02-12 09:13:50 +00:00
|
|
|
|
2026-05-21 19:48:02 +00:00
|
|
|
[[test]]
|
|
|
|
|
name = "t_equivariance"
|
|
|
|
|
path = "tests/parity-bar/t_equivariance.rs"
|
2026-02-13 17:34:01 +00:00
|
|
|
|
2026-05-21 19:48:02 +00:00
|
|
|
[[test]]
|
|
|
|
|
name = "t_lifecycle"
|
|
|
|
|
path = "tests/parity-bar/t_lifecycle.rs"
|
2026-02-13 17:34:01 +00:00
|
|
|
|
2026-05-21 19:48:02 +00:00
|
|
|
[[test]]
|
|
|
|
|
name = "t_detector"
|
|
|
|
|
path = "tests/parity-bar/t_detector.rs"
|