- rtx-inference: sample_next_token now copies the actual logits from the
forward pass (Tensor::to_vec, last-token slice) instead of sampling
from a fabricated all-zero vector; request metrics report measured
queue/processing times instead of hardcoded constants.
- rtx-serving-api: depends on rtx-inference; /v1/completions dispatches
to a shared InferenceEngine (byte-level tokenization until a real
tokenizer is threaded through) and returns 503 when no engine is
loaded instead of mock text. ServingServer::with_engine attaches one.
- rtx-streaming: depends on rtx-inference; generate_tokens delegates to
an attached backend engine and errors without one instead of emitting
"token_N" placeholders; tokenization is byte-level, not position-mod.
- speculative decoding: document the orchestration (speculative/) vs
implementation (medusa.rs/lookahead.rs) layering; CLAUDE.md no longer
claims a standalone rtx-speculative-decoding crate.
Co-Authored-By: Claude Fable 5 <[email protected]>
The workspace root was upgraded to thiserror = "2" in an earlier commit,
but 56 per-crate Cargo.toml files still independently declared "1.0".
These crates do not use workspace.dependencies inheritance for thiserror.
All updated to thiserror = "2" for complete fleet alignment.
Includes: rtx-backend, rtx-tensor, rtx-losses, rtx-backend-cuda/rocm/metal,
all training crates (rtx-auto, rtx-rl, rtx-distributed, rtx-federated, etc.),
specialized crates (rtx-science, rtx-platform, rtx-nmf, rtx-neuro-*),
production crates (rtx-streaming, rtx-serving-api), and all demo crates.
cargo check --workspace: PASSES.