Resolve three conflicts touched by main since the branch forked:
- studio/backend/core/inference/external_provider.py: take main's
rewrite of _anthropic_citation_key (extended dedup keys covering
end-char/page/block indices plus search_result_index) and the new
_anthropic_supports_fast_mode helper. The branch had only the
earlier shorter citation_key form so accepting main wholesale
here loses nothing Codex-related.
- studio/backend/models/inference.py: keep BOTH the Codex
parallel_calls field + _clamp_parallel_calls validator (from the
branch) AND the new Anthropic fast_mode field (from main). They
occupy different provider lanes.
- studio/frontend/src/features/chat/api/chat-adapter.ts: fold the
Codex per-tab rendering pass (renderFullContent) into main's new
orderAssistantContent positioning so tools land before text,
generated images after, AND any Codex tab text accumulated in
earlier _toolEvent frames is preserved through the synthesis
content delta (round 8 render-order fix).
Backend codex tests: 60/60 passing. Anthropic citations / fast_mode
tests: 96/96 passing. Frontend builds cleanly.