ok, here's a question: how does O.o() mesh with ES5's Object.defineProperty()? How does O.o() know to fire an update when it can't know what the property defined by O.defineProperty() is dependent on, since the getter is an on-demand item when called (and uncached at that)

In SproutCore/Ember, a defined ("computed") property has a dependency chain so anything bound to or observing it will get an update when the dependency is updated, but in VanillaJS here, we need to figure out a best practice for combining the two.

I'll be playing around with some ideas. Basically, I am pretty confident that one can have the Ember-like computed property model without having to define getter/setters for all properties (.get() / .set(), or .x(value || undefined)), but I need to keep experimenting.