I could disj it at the worker.clj level, so that system executor doesn't heart beat. 
The semantics of this supervisor function are still consistent 
(defn matches-an-assignment? [worker-heartbeat assigned-executors]
Yes you need to disj to do matching check because scheduler never assigns a system executor. And it shouldn't.