[workspace] members = [ "smith", "smith-core", "smith-ai", "smith-ui", "smith-tui", "smith-rpc", "smith-harness", "smith-cli", "smith-alloc", "smith-bench", "plugins/echo", "xtask", ] resolver = "3" # Bare cargo commands operate on host crates; wasm guest crates build # only under their target (`cargo x check`, `smith plugin build`). default-members = [ "smith", "smith-core", "smith-ai", "smith-ui", "smith-tui", "smith-rpc", "smith-harness", "smith-cli", "smith-alloc", "smith-bench", "xtask", ] [workspace.package] edition = "2024" version = "0.1.0" license = "Apache-2.0" # Dependency tiers — law in .system/RULES.md (Dependencies); concrete map lives here. # vocabulary: ecosystem IR, sanctioned once, facade-exempt. # engines: one owning crate each, app vocabulary at boundaries, one stack per concern. # leaf: small utilities, direct use. # dev: tests and benches only. # build tools (cargo-machete, cargo-deny, cargo-audit, wasm-tools): # xtask-installed --locked, never crate deps. [workspace.dependencies] # vocabulary serde = { version = "1", features = ["derive"] } serde_json = { version = "1", features = ["preserve_order"] } futures = "0.3" thiserror = "2" tracing = "0.1" url = "2" # engines ureq = { version = "~3.4", default-features = false, features = [ "rustls", ] } # smith-harness, http stack; tilde pin: the chunk-gap timeout uses ureq::unversioned ciborium = "0.2" # smith-core, cbor session codec wasmtime = { version = "49", default-features = false, features = [ "runtime", "component-model", "cranelift", "demangle", ] } # smith-harness, wasm plugin engine tracing-subscriber = { version = "0.3", features = ["env-filter"] } # smith-cli, log output similar = "2" # diff ignore = "0.4" # search stack grep = "0.4" # search stack grep-regex = "0.1" # search stack grep-searcher = "0.1" # search stack oauth2 = "4" # smith-ai, oauth flows zstd = "0.13" # compression zip = { version = "2", default-features = false, features = ["deflate"] } # archives tar = "0.4" # archives flate2 = "1" # archives jsonschema = "0.28" # smith-ai, catalog validation sha2 = "0.10" # checksums ratatui = "0.29" # smith-tui, terminal stack (widgets) crossterm = "0.28" # smith-tui, terminal stack (backend) unicode-width = "0.2" # smith-tui, terminal stack unicode-segmentation = "1" # smith-tui, terminal stack syntastica = { version = "0.6", default-features = false, features = [ "runtime-c2rust", ] } # smith-tui, highlighting syntastica-parsers = "0.6" # smith-tui, highlighting # wasmtime arrives with the wasm plugin law; owner smith-harness. # leaf utilities uuid = { version = "1", features = ["v7", "serde"] } dirs = "7" fs2 = "0.4" nix = { version = "0.31", features = ["signal"] } # unix, smith-core process handling clap = { version = "4", features = ["derive", "env"] } clap_complete = "4" fuzzy-matcher = "0.3" # dev insta = "1" archunit = "0.0.1" assert_cmd = "2" predicates = "3" proptest = "1" criterion = "0.8" gungraun = "0.19" # smith-bench, callgrind instruction budgets; runner installed by xtask # Mutation-testing profile: lean debug build, many rebuilds. [profile.mutants] inherits = "test" debug = "none" strip = "debuginfo" [profile.release] opt-level = 3 lto = "thin" codegen-units = 1 strip = "symbols" panic = "abort" # Benches keep symbols: callgrind attributes instructions to functions. [profile.bench] inherits = "release" debug = "line-tables-only" strip = false [profile.release.package."*"] opt-level = 3