When a null job argument is passed to ComposerServiceImpl.encode it is not checked, instead a global try/catch is used to suppress any errors the caller might see. This is an error prone practice, and causes not only a bunch of work to happen, including moving files around in the worspace even though there is no job id to associate the work with. The error is then just the broad "Unable to put the encoded file into the workspace"
A solution to this is to check the job at the beginning of the call.
The @Ignore test testEncode2() demonstrated this issue.