fix(trace): replace spec copies in Claude Code request blobs
Fixes #3654.
Claude Code writes api-request-blob records in its transcript. Each record repeats the blocks of one message of an API request: the prompt, the tool calls, and the tool results. The spec copy finders of the Claude Code provider did not handle these records:
- The copies of pasted images and spec sources in the records stayed inline, so the evidence held them a second time.
- A record repeats the tool call ID of its entry. When a record came after its entry, the finder used the record in place of the entry, so the entry kept its copy.
The finders now skip the request blobs when they match calls and results. Then each blob block gets the pointer of the entry with the same tool call ID, when it holds the same value. An image in a blob gets a pointer when its data is a spec source. The Trace README notes that pointers also cover these records.
The end-to-end suite found the problem (spec issue-3635, #3655). With this fix, its "Pasted image pointers" check passes for Claude Code, and "Spec source pointers" passes in 3 of 3 runs (it was 2 of 3).
AI disclosure: Claude Code helped to write this change.