
The first bug: I believe that the target level argument for the definition of the transition callback should be of type int16_t instead of the unsigned version since it is inconsistent with the get and set callbacks. Also iirc according to the generic level model the range is defined between the min and max of the signed int16_t instead of uint16_t.
This doesn't really affect the functionality of the level server (lights work perfectly fine), but it leads to the RTT server logs raising some eyebrows, such as when you set the target level below 0, the rtt of the server side overflows to 65,535 as what an unsigned integer would be expected to do.
This bug is quite trivial to fix, I just change the callback typedef to the signed version and fix the related locations (in this case the app_level_server_transition_cb() function definition and forward declaration)
The second bug: with the dimming example is that the client server seems to be 1 cycle off from outputting the present level of the server when it recieves the status message. To clarify what i mean, this is a picture of the RTT output:

A small note: the server RTT outputs you see here are after I fixed the first bug
Anyways, the top terminal is the server and the bottom terminal is the client. The client RTT output of the current level always seems to be late by one command. Unfortunately I have not had to time to solve this bug unlike the one I mentioned first in this opening post, but perhaps later on I will try to find a fix unless someone beats me to it :P. One suspicion I have is that the client is outputting the message into the RTT *before* it actually receives the appropriate status message hence why its output is always one command late.