Refactoring: In multiple locations, remove one level of nesting to return earlier, declare variables sooner, and avoid inline if statements.
Refactor:
Avoid single entry, single exit where it's not needed (http://programmers.stackexchange.com/questions/118703/where-did-the-notion-of-one-return-only-come-from)
Braces, readability
Minor cleanup
todoOK is not defined
Misc cleanup
Avoid early return
JSLint style for function() vs function ()
Refactor to return earlier
Refactor to return earlier
Split logic
Split logic
Reorder
Remove unneccessary conditional argument
Drop todoOK, it's no longer needed
Drop todoOK, it's no longer needed
Drop todoOK, it's no longer needed
DRY - extract propagateToInferiors
Invert many of the checks that boil down to:
      } else {
        task.status = oldStatus;
        return false;
      }
If nothing has changed, return true earlier
Shift down further