I've compiled YBEProxy in order to try it on a linuxjampded server running at sv_fps 20, but turned out YBEProxy caps sv_fps at minimum of 30 for some reason, without mentioning it.
When sv_fps is set to 20 or below, we can clearly tell that a server still runs at 30 FPS based on the following signs:
Ping calculation is precise, which is not possible on sv_fps 20, where you should get rounded pings such as 48 for low pings etc. i.e if my current ping is 35, it will be 35 on sv_fps 30, but on sv_fps 20 it will be approximately 48, which is normal due to impossibility of calculating precise ping on 20fps due to its natural limitations.
When setting sv_fps 5, ping should double i.e. if my normal ping is 100 it should become 200, which doesn't happen because server continue operating at sv_fps 30 internally and ping calculation is precise.
Client-side snaps react to sv_fps change that makes a misleading impression of changed FPS, but it's only because JKA clients cap /snaps to the current /sv_fps. When I remove this autocap from my client (by rebuilding OpenJK), the sv_fps changes become unnoticeable even at sv_fps 1 and server is playable, which is not normal.
I didn't find any mentions of lower limit for sv_fps across your hackmd.io notes, but still would like to know if it's a known feature or something that you are unaware of and maybe a bug.