What is the correct way to handle chain of custody for outbound digital recordings in bulk export

Is there a clean way to handle chain of custody for outbound digital recordings in bulk export when the metadata seems to drift? we are running a predictive outbound campaign in genesys cloud eu-west region. the requirement from legal is strict about chain of custody and audit trails for every interaction. we are using the bulk export api to push data to an s3 bucket via the integration. the issue is specifically with digital channels like webchat and sms that are triggered from outbound campaigns. the recording files arrive in s3 but the metadata json file does not always contain the correct campaign id or the disposition code. sometimes the disposition is just ‘completed’ even though the agent manually set it to ‘callback_later’. this breaks our legal hold process because we cannot filter by disposition accurately in the archive. we checked the architect flow and the disposition is being set correctly in the interaction data. the oauth token has full permissions for recording:read and export:write. we are seeing this happen about 15% of the time. the error is not a hard failure but a data integrity issue. the recording timestamp matches the interaction start time but the metadata lag is noticeable. we tried waiting 24 hours but the metadata does not update in the exported json. is this a known limitation of the bulk export api for outbound digital channels? or is there a specific parameter we need to set in the export job configuration to force the metadata refresh? we need a reliable way to ensure the exported metadata matches the ui view in genesys cloud for legal compliance. any insight would be appreciated. we are using the latest sdk version for python. the environment is production. we cannot afford to have gaps in the chain of custody for discovery requests.