Expand description
2026-09-26: Scheduler equivalence: one BFCL draw served under the sync and
the async device router (--scheduler-config), compared per sample_id
and per concurrency.
Owner: bench, scheduler-equivalence gate. Invariants:
- A sample agrees only when its canonical transcript (reasoning, text, tool calls with raw arguments, finish reason) and its completion token count are equal under both routers; a failed request is unmeasured, never equal.
- Each serve pins its speculation lane (
host::Lane), because the MTP gate otherwise picks verify or plain decode by measured throughput. - With the control on, the sync serve is measured twice per lane, and a control that diverged fails the run before the async column is read.
- The async router’s counters are recorded as
async_*metrics and take no part in the verdict. - Loading fails without an installed
host::RouterHost; the serving process installs one as it starts.
Re-exports§
pub use driver::DESCRIPTOR;pub use driver::METADATA;
Modules§
- compare
- 2026-09-26: Given what each pass produced, decide whether the synchronous and asynchronous routers are the same function of a request. No I/O, so the tests build each failure without a server.
- driver
- 2026-09-26: The scheduler-equivalence driver: serve each router under each
lane, issue the draw at each concurrency, and hand the legs to
compare. - host
- 2026-09-26: The seam the scheduler-equivalence gate re-serves the checkpoint
through: the serving process installs a
RouterHost, because this crate starts no server. - report
- 2026-09-26: How a scheduler-equivalence run is presented: the terminal frame
built from
compare::score. - unmeasured
- 2026-09-25: Why a sample is unmeasured: one entry per request that failed or never came back.