define([
    "underscore", "backbone"
], function (_, Backbone) {

    var TaskSummary = {};

    TaskSummary.Model = Backbone.Model.extend({
        defaults:function () {
            return {
                id:"",
                links:{},
                displayName:"",
                description:"",
                entityId:"",
                entityDisplayName:"",
                tags:{},
                submitTimeUtc:null,
                startTimeUtc:null,
                endTimeUtc:null,
                currentStatus:"",
                result:null,
                isError:null,
                isCancelled:null,
                children:[],
                detailedStatus:"",
                // missing some from TaskSummary (e.g. streams, isError), 
                // but that's fine, worst case they come back null / undefined
            };
        },
        getTagByName:function (name) {
            if (name) return this.get("tags")[name];
        },
        isError: function() { return this.attributes.isError==true; },
        isGlobalTopLevel: function() {
            return this.attributes.submittedByTask == null;
        },
        isLocalTopLevel: function() {
            var submitter = this.attributes.submittedByTask;
            return (submitter==null ||
                    (submitter.metadata && submitter.metadata.id != this.id)); 
        },
    });

    TaskSummary.Collection = Backbone.Collection.extend({
        model:TaskSummary.Model
    });

    return TaskSummary;
});

@@ -679,32 +679,105 @@
 ailedStatus:%22%22,%0A
+                blockingTask:null,%0A                blockingDetails:null,%0A
                 
@@ -1449,24 +1449,453 @@
 %0A        %7D,%0A
+        %0A        // added from https://github.com/jashkenas/backbone/issues/1069#issuecomment-17511573%0A        // to clear attributes locally if they aren't in the server-side function%0A        parse: function(resp) %7B%0A            _.keys(this.attributes).forEach(function(key) %7B%0A              if (resp%5Bkey%5D === undefined) %7B%0A                resp%5Bkey%5D = undefined;%0A              %7D%0A            %7D);%0A%0A            return resp;%0A        %7D%0A
     %7D);%0A%0A   

reset the backbone model for tasks when server-side object omits fields (fixes bug where blockingTask and blockingDetails weren't being cleared if they were simply dropped from server-side object)