Clients that moved from /v1/chat/completions to the newer Responses API now
drive metered serving unchanged. to_serve_request_responses parses a
Responses request — `input` as a bare string or message items, an optional
top-level `instructions` system turn, `max_output_tokens` as the decode cap;
fidelity floor + joule ceiling read exactly as the chat path. complete_responses
routes it through mesh.serve and returns a Responses result — the assistant
turn as one output_text item — with the sealed mesh/1 receipt under
usage.energy (Responses usage uses input_tokens / output_tokens).
The sealed usage.energy block is now a single energy_block() helper shared by
both paths, so the receipt is single-sourced. The std-only reference server
exposes POST /v1/responses alongside /v1/chat/completions.
Tests: responses parsing (string input, array input + instructions, malformed)
and an end-to-end complete_responses whose embedded JCR-1 envelope verifies
under the steward key. cargo test --all-features green, clippy clean; live
curl smoke of /v1/responses returns object=response with the sealed receipt.
Co-Authored-By: Claude Opus 4.8 <[email protected]>