Script metadata tagging breaking bulk export chain of custody

How does the script engine actually tag metadata when a recording gets pulled into a bulk export job? The chain of custody snaps on legal holds whenever the script version flips, and the export throws a 422 on /api/v2/recordings/bulk. We’ve been patching the S3 bucket policy to catch the raw pointers before they drop to keep the manifest intact. Does the metadata chain validate the script hash before writing to the bucket, or is it just trusting the agent-side timestamp?

  • Architect 24.1
  • Bulk Export Job: bx_9f8e7d6c
  • S3 Integration v2
  • Legal Hold: Active
// scope: view:recording
const meta = await platformClient.RecordingsApi.getRecordingMetadata(id);
const v = meta.scriptVersionId;

The engine checks that versionId against the manifest. Hash drifts mid-job. You’ll hit the 422. Show me the payload structure.