[workspace] resolver = "2" members = [ "crates/core_model", "crates/data_source", "crates/engine", "crates/extfn", "crates/nl_formula", "crates/pg_model", "crates/verified", ] # pg_improv is its own workspace (pgrx needs pg_config + libclang); see its Cargo.toml. # duckdb_improv too (its loadable-extension duckdb must not unify with # storage_sql's bundled one); see its Cargo.toml. exclude = ["crates/pg_improv", "crates/duckdb_improv"] [workspace.package] version = "0.10.0" edition = "2021" rust-version = "1.97" license = "Apache-2.0 OR MIT" authors = ["Greg Burd "] repository = "https://github.com/gburd/improv" [workspace.dependencies] # Core deps shared across crates. Pinned; bump deliberately. thiserror = "2.0" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" # Property-based testing (Hypothesis engine; imported as `hegel`). hegeltest = "0.50.1" chrono = { version = "0.4", features = ["serde"] } # Verus's standard library (specs/proofs; erased under plain rustc). Pinned # exactly: it must match the Verus release CI verifies with # (0.2026.10.04.426d8b0; see scripts/verify.sh). MIT. vstd = { version = "=0.0.0-2026-10-04-0306" } # Differential dataflow is the mandated computation engine (see AGENT_STEERING.md). # Version pinning is delicate: DD 0.13.7 pulls timely 0.19/timely_communication # 0.18 (a columnar line that won't compile on rustc 1.97); DD 0.12.0 compiles but # has a merge_batcher UB that aborts under debug assertions. DD 0.13.0 + timely # 0.13.0 is the pre-breakage pair the spike validates. differential-dataflow = "=0.13.0" timely = "=0.13.0" # Storage substrate: the embedded SQLite Mentat fork, from crates.io (Mentat # 1.12+ publishes it as `mentatdb`; the library is still `mentat`). Bump # procedure + benchmark: AGENTS.md "CI / storage-backend pin". mentat = { package = "mentatdb", version = "=1.16.0" } # TUI (Phase 2). ratatui = "0.29" crossterm = "0.28" # Server (Phase 3). axum = "0.7" tokio = { version = "1", features = ["rt-multi-thread", "macros", "net"] } tower = "0.5" # Desktop GUI (Phase 5). egui/eframe — see AGENT_GUI_STEERING §9.1. # Pinned to the stable 0.29 API (0.36's `App::ui` API is newer/less settled). eframe = "=0.29" egui = "=0.29" egui_extras = "=0.29"