[package]
name = "epiphany-testkit"
version = "0.0.0"
edition.workspace = true
rust-version.workspace = true
authors.workspace = true
repository.workspace = true
description = "The Epiphany conformance testkit (spec QUICKSTART, Agent F): deterministic generators for the public types, the canonical round-trip harness, the CRDT convergence and equivocation harnesses, the crash-recovery and manifest-selection gates, and the layout round-trip. Cross-cutting; drives the real epiphany-determinism/core/ops/bundle/layout-ir crates."

[dependencies]
epiphany-determinism.workspace = true
epiphany-core.workspace = true
epiphany-bundle.workspace = true
epiphany-ops.workspace = true
# Agent E's layout IR has landed; the layout round-trip harness (criterion 6)
# now drives the real crate instead of an in-tree stub.
epiphany-layout-ir.workspace = true

# The Chapter 10 performance benches (worklist F1) run under criterion; the
# budget-gate logic itself lives in `src/budget.rs` on plain `std`, so the
# library builds without it. The editor-core + engrave pair drives the
# multi-system click-to-insert regression test (`tests/multisystem_click.rs`)
# over the real casting-off engraver — dev-only, so the library dependency
# graph is unchanged (engrave's own dev-dependency on this crate makes the
# cycle dev-only, which cargo permits).
[dev-dependencies]
criterion.workspace = true
epiphany-editor-core.workspace = true
epiphany-engrave.workspace = true

# Drives the whole suite at scale outside the unit-test timeout — the analogue
# of epiphany-determinism's `fuzz_roundtrip` and epiphany-bundle's `fuzz_crash`.
[[example]]
name = "conformance_suite"

# The Chapter 10 performance-budget benches (worklist F1; DECISIONS.md F0/F1).
# `harness = false`: each bench owns `main()`, running criterion's measurements
# first and then the budget gate — the assertion layer criterion cannot express
# — exiting nonzero on an unexpected budget miss.
[[bench]]
name = "reduction"
harness = false

[[bench]]
name = "bundle"
harness = false
