Job is an immutable structure and all mutations happen
via JobMutator service.
This makes it easy to reason about control flow.