It is completely valid for commands to both fail and also have a write concern error. ShardRemote already handles this correctly, ShardLocal needs to be updated to behave the same as ShardRemote.
This leads to the following weird error appearing on config servers:
2016-09-01T17:09:00.740-0400 I SHARDING [conn21] couldn't create config.changelog collection: :: caused by :: InternalError: Invalid to check for write concern error if command failed