I would not rely on the Agent version to diagnose the cause of failure. the fact that version has an uncommon string in reports (0.0.0.0, etc.) is more of a side effect of the agent malfunction.
What I did for several customers is to write a routine that runs upon USP and determines for all agents where the status is not "agent is alive" based on a root cause analysis tree what is the reason for the agent to be down, the I store the reason in a server property I named AGENT_STATUS_CAUSE. (you could use a different name of course)
That way, if the agent is alive, you can look at its version. If it's not alive, then the version in not necessarily relevant and you first need to bring the agent back online (or decommission the server if it's no longer there) and the AGENT_STATUS_CAUSE will help you do so by giving you the ability to group your non functional agents by cause. Once these agents are back online and only then you should worry about their version.
Olivier, is it possible for you to create a ZipKit of your work?
I could really use something like that. In fact, I found your post because I was searching for a way to create some sort "weird agent version" decoder and remediation workflow.
I think there's a version of my script floating around on the BMC websites, but I think creating aZipKit is a great suggestion. I will work on it.
Much appreciated (and needed).
By the way, I am certain that the ZipKit would be version-neutral but my current version is with BSA 8.5.01.002. Being selfish but that is probably the version I would be testing and working against. Is there anything I can do to assist?