The model response-validation layer checks provider responses, tool calls, structured output, and stream events before an agent can use them. This release gives each mechanical rejection a small, privacy-safe category so applications can diagnose which contract failed without storing rejected model content.
Mechanical rejection categories
OutputValidationError.Kind()reports one of eight closed categories for response shape, output bounds, tool identity, tool arguments, tool choice, structured output, stream protocol, or usage.- Built-in Anthropic, Bedrock, OpenAI, and Vertex adapters assign the category at the check that first rejects provider output. Network failures, cancellation, and empty event sources remain provider errors rather than being mislabeled as model validation.
- Runtime telemetry and saved per-invocation evidence may carry the closed category alongside existing hashes and sizes. They do not include response text, provider text, tool names, arguments, identifiers, or schema paths.
- Planner-authored policy rejections remain uncategorized. Recovery still requires an exact generated correction, exact unavailable-tool evidence, or planner-authored correction; a category alone never causes a retry and
MaxRecoveryTurnsis unchanged.
Required upgrade action
Custom model transports must update producers and consumers together. Carry the category in the transport's output-rejection variant and call model.RestoreOutputValidationError(kind, cause, evidence, usage). Regenerate application code against v0.78.6 and deploy the compatible producer and consumer binaries together.
Built-in gateway users have no new gateway wire field because response validation remains local to each process.
Saved histories written before v0.78.6 continue to decode and replay with no category. Current planner-policy rejections may also omit it. After a v0.78.6 worker writes categorized activity results or hook records, do not roll that workflow back to an older binary. Legacy-history coverage can be removed only after all retained workflows created by older binaries have expired.