Consider me surprised, when this gadget found out that most popular containers already support opensocial-1.0.
The current shindig code builds an array of features from the gadget in RenderingContentRewriter.java:354. For all features referenced by the gadget, this will contain an entry with the configuration. Even for the ones that are optional.
in core.io/utils.js, the hasFeature() method only tests the presence of a key in this array. Which is always present if a feature is referenced by the gadget spec. No matter whether it exists or not. It will always report the feature existing. As the Optional/hasFeature combo is the only way to find out whether a given feature requested by a gadget is actually present, I consider this a bug.