It appears that Tasks with no output are supposed to implement a custom complete() method, since completion normally means all the output files exist. We should either make the outputs include all outputs or add a custom complete method that figures it out some other way.
More discussion here: https://groups.google.com/forum/#!topic/luigi-user/F8AAG91tZfk