missive uses Criterion benchmarks as local, non-blocking performance probes. They are intended to make regressions inspectable while the project is still adding features; the initial budgets below are soft guidance, not quality-gate failures.
Compile every benchmark target without measuring:
cargo bench --workspace --all-features --no-runRun the current benchmark suite:
cargo bench -p missive-cli --bench performance --all-featuresRun the same benchmark target in Criterion's fast smoke-test mode:
cargo bench -p missive-cli --bench performance --all-features -- --testCriterion stores local reports and baselines under target/criterion/, which is
build output and must not be committed. To inspect a local regression, save a
baseline before the change and compare after the change:
cargo bench -p missive-cli --bench performance --all-features -- --save-baseline before
# make the candidate change
cargo bench -p missive-cli --bench performance --all-features -- --baseline beforeAggressive quality-gate mode compiles benchmarks with cargo bench --no-run
when benchmark sources exist, but it does not run full measurements by default.
The performance Criterion target currently lives at
crates/missive-cli/benches/performance.rs
and covers:
- configuration loading and redacted rendering for a multi-agent TOML config;
- SQLite repository CRUD batches for agents, contexts, tasks, messages, artifacts, and events;
- router planning for capability-match, weighted, broadcast, and quorum policies;
- event-journal replay summary reconstruction;
- A2A streaming event JSON parsing, including JSON-RPC unwrapping;
- local group collective command paths for gather and deterministic summarise reduce over seeded profile state.
All benchmark fixtures use temporary in-memory stores or temporary MISSIVE_HOME
directories and local loopback URLs only. They do not contact third-party
agents.
These budgets are deliberately loose so early development is not blocked by machine noise, debug packages, or still-evolving data models. Treat them as investigation thresholds on a typical developer laptop after a release build has already warmed dependencies.
| Area | Benchmark signal | Soft investigation budget |
|---|---|---|
| Config load | parse and validate a 32-agent TOML config | Criterion upper estimate under 25 ms |
| Config redaction | render the same config as redacted JSON | Criterion upper estimate under 25 ms |
| Store operations | one CRUD batch for 32 task/message/artifact/event rows | Criterion upper estimate under 75 ms |
| Routing | 128-candidate policy planning | Criterion upper estimate under 20 ms per policy |
| Event replay | replay 512 event records into summaries | Criterion upper estimate under 50 ms |
| Stream parsing | parse 256 A2A stream events | Criterion upper estimate under 50 ms |
| Local collectives | gather or local summarise reduce over 16 members | Criterion upper estimate under 200 ms |
When a result exceeds a soft budget, first rerun with a saved Criterion baseline and check whether the regression is repeatable. Only then decide whether to optimize, adjust the budget with a documented reason, or add a future automated performance gate.