Well you haven't proven me wrong yet

From what I can tell, a UPB device still can't broadcast a status change whenever they respond to a link command. You are relying on a database (which will probably take a while to generate if you have a good amount of UPB hardware) to compensate for something which UPB devices don't support, unless I misunderstood you.
I am not quite sure what I should be proving. Your first statement was that Elk couldnt get it right because of a limitation inherit with UPB. My response was that the Elk couldnt get it right because of it's limited CPU and memory resources. A weak position would be that we are both right. To some extent we are.
When it comes to the limitations of UPB it might be helpful to spell out exactly what is lacking. From your comments I'm assuming that you think the problem is that UPB devices dont broadcast a status change whenever there is one. I'd have to agree that would be a great feature especially if the goal was to make it easy to implement a controller. Sadly, engineering is all about trade-offs.
The root of the "problem" with implementing that feature, in my opinion, is the low bandwidth of the connection between the devices. 30 bytes (or so) per second over a broadcast medium isnt all that much. Now consider that a device status report can take up to 23 bytes. Most only send about 10 but that's still 1/3 second. The fun starts when a link with more than just a few devices is activated. Now you've got all these devices all trying to reply at the same time and having to figure out if their reply made it to it's destination. Imagine a link with all 250 devices, it could take minutes to sort itself out all the while your button presses at the switches would have to fight for a chance to send their messages. While this is a solved problem (ethernet works like this) it does put a bit of load on the individual device and, to work in a timely fashion, needs a lot of bandwidth. Note also that I havent even mentioned the problems associated with reporting the status of a slow fade.
The UPB designers chose to keep the cost down and not put that kind of power into the devices. Instead, they chose to put the burden on the controller. Back to the trade-offs again. If they doubled the price of the device, they could probably pull it off.
The designers, I assume, didnt feel the need to implement this feature. They likely considered the problem it would solve to be a non-problem because the protocol has support for device discovery and configuration. Any controller can query the network and build the database needed to track the device state.
What, I think, they didnt count on is that nobody (except perhaps a crazed hobbyist) would want to implement a controller that actually made full use of the protocol! What's really sad is their decision not to publish the source code for upstart. I am sure that with a "reference implementation" available to third parties, there would be much better software support for their devices. The engineers did a great job of making a very usable protocol. I suspect someone in marketing perceives some value in keeping the key to using it all locked up.
In the case of the Elk, I gather from all the postings here that it has long been at the limits of it's CPU and memory resources. So, much like the UPB designers being stuck with some of their decisions (300 baud) the Elk designers have to deal with what they have. Specifically, a box designed to work with the much simpler X10 protocol. They had to make a lot of trade-offs to get it to work at all with UPB. I am not surprised that they didnt get link tracking right. What does surprise me is that they missed a couple of simple things that would make their UPB support a bit better at least with respect to its interaction with controllers that do have more smarts. The ability to set the ackrq bit and repeat count, for example.
So who's to blame for the Elk not properly supporting UPB? I guess we can agree to disagree here, but it seems odd to me to blame UPB for not implementing a protocol that can be easily used by devices designed for X10... especially when the main complaint centers around a feature that X10 never had.
Would love to learn more about that controller of yours tho, sounds very interesting
Right now I have support for UPB, Elk, Brultech, 1-wire, Intellitouch, Statnet (AprilAire), and RFXCOM. The primary goal of the package is to simplify adding support for new devices. At this point it's a collection of device drivers that map hardware to higher level virtual devices. But the drivers are all coded with a common toolkit designed to decode and encode data from packed binary and ASCII protocols and publish the results to a distributed, object oriented database.
Lately I've been putting thought into how to license the code. On the one hand I'd like to turn it into a product. On the other, I'd really like to simply release it as open source. A dual license (GPL/commercial) is not out of the question, but since I prefer to write code over contracts, that decision is likely to take some time. And since I still need to pay the bills, the code is not getting my full attention.