feat(chat): honest native-client contract for queue_depth + SSE event kinds
Promote to the generated OpenAPI contract exactly the fields/events a native
chat client branches on, and prove the served JSON matches the declaration.
- POST /api/chat: accepted-turn 200 now carries queue_depth (int) alongside
use_id/queued; queue-full 429 carries a stable top-level queue_depth in the
Error envelope. Both named in the contract.
- Contract framework: _response() renders allOf[Error, named_fields] when a
reason-code response also declares named fields, keeping x-reason-codes.
- error_response() gains an optional `extra` dict (DRY shared envelope).
- Root SSE: x-chat-events extension names the 9 native chat event kinds.
- Close the talent_queued omission in CALLOSUM_REGISTRY["chat"].
- Route-level conformance tests assert real Flask JSON ⊆/⊇ the declared shape.
- Regenerated docs/openapi/convey-clients.json + CONVEY.md callosum block.
All changes additive (classify_changes vs HEAD == []); make check-openapi green.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>