It seems that knockout is not mapping the properties of objects in an array correctly.
See this example from the chrome console:
> var viewmodel = ko.mapping.fromJS({list:[]});
undefined
> viewmodel.list().unshift({ name : ko.observable("Foo") });
1
> viewmodel.list()[0].name();
"Foo"
> var js = ko.mapping.toJS(viewmodel);
undefined
> js.list[0].name;
undefined
So the javascript object is being created, but the 'name' property does not get mapped.
Any ideas are very welcome!