Description
Create the crates/zeph-bench/ workspace crate with the bench feature flag and implement BenchmarkChannel that satisfies zeph-core::Channel.
Part of epic #2827. See spec: .local/specs/zeph-bench/spec.md.
Scope
crates/zeph-bench/Cargo.toml with dependency on zeph-core, zeph-memory, zeph-llm, zeph-config
BenchmarkChannel struct implementing all Channel trait methods (headless: recv from scenario queue, send/send_chunk collect to buffer, confirm=auto-approve, elicit=auto-decline, supports_exit=false, all others no-op)
BenchError typed error enum via thiserror
- Unit tests for channel behavior (recv drains queue, send accumulates response, recv returns None when queue empty)
- Add
bench feature to root Cargo.toml [features] (not included in full)
- Add
dep:zeph-bench and register in workspace dependencies
Acceptance Criteria
Description
Create the
crates/zeph-bench/workspace crate with thebenchfeature flag and implementBenchmarkChannelthat satisfieszeph-core::Channel.Part of epic #2827. See spec:
.local/specs/zeph-bench/spec.md.Scope
crates/zeph-bench/Cargo.tomlwith dependency onzeph-core,zeph-memory,zeph-llm,zeph-configBenchmarkChannelstruct implementing allChanneltrait methods (headless: recv from scenario queue, send/send_chunk collect to buffer, confirm=auto-approve, elicit=auto-decline, supports_exit=false, all others no-op)BenchErrortyped error enum viathiserrorbenchfeature to rootCargo.toml[features](not included infull)dep:zeph-benchand register in workspace dependenciesAcceptance Criteria
cargo build --features benchcompiles with zero warningsBenchmarkChannel::recvreturns turns from an injected queue and None when exhaustedBenchmarkChannel::sendandsend_chunkaccumulate response into an internal buffer readable by the harnessBenchmarkChannel::confirmreturns Ok(true) without blockingBenchmarkChannel::elicitreturns Ok(Declined) without blockingbenchfeature absent fromfullbundle