Looking at my energy bar during fights seems to indicate that the same problem of client/server time "separation" occurs for Ferocious Bite. In a mix of the two scenarios of my last post, it looks like FB drains the base cost (the one which can be eliminated by OOC) client-side, i.e. immediately at the CAST_SUCCESS event, while the extra energy is drained at application time, i.e. SPELL_DAMAGE event. While this is not particularly complex in itself, it raises some questions on how the extra energy is calculated.
Possibility 1: client-side. When you execute a FB, the client sends the server both the order to do FB together with the current energy level, while at the same time draining the base cost (which is guaranteed to happen). Upon actual execution, the server uses the energy value you sent (checking it for consistency) to determine the extra energy and sends back a message with the damage and with the energy amount actually used, so that the client can update.
Possibility 2: server-side. The client just sends the order to FB while draining the base cost, the server looks at the current energy and determines the extra amount, returning it to the client together with the SPELL_DAMAGE event.
The difference is small, and can be quantified to be the amount of energy regen occurring during the network transit (which can be non-negligible, especially if you're testing in SW...). Since I don't really know how to reliably test it without things being complicated, I'm assuming that the extra energy is determined at cast time, i.e. when you press the key the extra energy is EnergyNow - BaseFBCost (capped by the max extra energy), which is possibility 1. Whatever the case it won't play a major role.
Apart from these minor details, energy reconstruction looks more reliable now, but I still have an error (more regen than used). What surprised me is that on the test log I'm using (shred only), it's almost exactly 40 energy, which is definitely suspect.... almost like one normal shred ended up being counted as OOC-powered..... I'll do more test runs and keep improving things.