Looking through the APIs, this might be a bug. There are myriad versions of appending(path:), and it seems the compiler keeps trying to use this one, when it actually should use one of these two: here, and here.
The appending methods from AnyKeyPath and PartialKeyPath are intentionally not available on concrete KeyPath<T, U> values, because they would type-check for mismatched KeyPath<T, U> and KeyPath<U', V> types and produce unwanted optionality. It looks like we are missing the operation to append a KeyPath<T, U> and PartialKeyPath<U> without forming an optional. I'd file a bug about that.