When we first implemented document versioning in CirrusSearch it was done incorrectly, we never actually set the version or version type on at a document parameter, only as values inside the document. As such elasticsearch has never used our version numbers. We typically ship updates using the super_detect_noop script, which requires usage of the update api. Per the docs:
External versioning (version types external & external_gte) is not supported by the update API as it would result in Elasticsearch version numbers being out of sync with the external system. Use the index API instead.
As such we will need to bring back https://gerrit.wikimedia.org/r/#/c/219118/ and deploy it, then update CirrusSearch to use that versioning support when available.