I suppose I see now how the client can send its temporary ID to the server, but it would require a bit of a rework of the current system. Right now, the high level commands (primary action, secondary action, walk forward, etc) are sent automatically to the server by the input system. There isn't a command for "fire arrow" because it depends on what your currently equipped weapon is. The system doesn't know it'll be firing an arrow until it gets further along with the input processing. I'd have to change it so that each individual system is responsible for sending out the commands after having processed the input. Which would also mean the server would have an entirely different code path for input handling. Is there a way around having to do this?
Well I figured waiting the full round trip time + the 100ms from the dejitter buffer would be a very obvious delay on a combat-related action, which should appear to happen quickly.
Why is it unacceptable? You either have an authoritative server on arrow-firing, or you don't.