Documentation states that "standard HTTP error codes" are used but that's not what I'm seeing

https://developer.couchbase.com/documentation/mobile/current/couchbase-lite/java.html#getting-started says " If an error occurs, the replication status will be updated with an Error which follows the standard HTTP error codes."

But compare that to com.couchbase.lite.CBLError.java, where HTTP errors start at 10000 - CBLErrorHTTPNotFound is 10404, and so on. This is the value that client code sees in a ReplicatorChange callback, for example, which then has to be reversed doing something like the opposite of CBLStatus.convertException.

Which seems like an odd round trip:
404 error -> CBLStatus converts it to a 10404 -> callback provides a ReplicatorChange with that code and the domain CBLError.Code.CBLErrorHTTPBase -> the client extracts the CouchbaseLiteException and determines the “correct” error code using the domain and code.

What am I missing?

Yes that’s a known issue in the documentation. See comments in https://issues.couchbase.com/browse/DOC-3786 for answers. We’ll try to prioritise it.