Real server RPC: orchestration.getThreadProjection followed by orchestration.getTurnItem for each dynamic tool item, from each commit's running server. Identical synthetic Replay fixture; fresh isolated state. Base 5be6bc99c234b0db92ffb0b3ebd8746fd579112b: empty_structured_content completed: appReferenceRetained=true imageDataRetained=false outputKind=object bytes=363 small_image_result completed: appReferenceRetained=true imageDataRetained=false outputKind=object bytes=307 large_image_result completed: appReferenceRetained=false imageDataRetained=false outputKind=string bytes=303523 failed_app_call failed: appReferenceRetained=true imageDataRetained=false outputKind=object bytes=254 Head 0b963bd05db70dd8ff1e3dde4e34991581635060: empty_structured_content completed: appReferenceRetained=true imageDataRetained=false outputKind=object bytes=363 small_image_result completed: appReferenceRetained=true imageDataRetained=false outputKind=object bytes=307 large_image_result completed: appReferenceRetained=true imageDataRetained=false outputKind=object bytes=303789 failed_app_call failed: appReferenceRetained=true imageDataRetained=false outputKind=object bytes=254 Head UI opened empty_structured_content: EMPTY_STRUCTURED_CONTENT_FALLBACK: checkout 128, then [image], beside its app. Head UI opened failed_app_call: FAILED_CALL: synthetic query rejected. Limitation: replay adapter stripped image bytes before detail projection. Does not prove preservation of image data on head.