"A computation is not complete until the control plane durably accepts it."
The Most Important Sentence in the System
Everything in Recall's distributed design collapses to one rule. The executor can finish computing a transcript — the function returned, the file is on disk, the log says success — and none of that means the job is complete. Completion is a property of the source of truth, not of the machine that did the work. The job is done when, and only when, the control plane has durably recorded that it accepted the result.
Why be so strict? Because between 'the executor finished' and 'the control plane knows' there is a network, and networks fail. The executor might compute a perfect result and then lose its connection before reporting it. If you called that 'done,' the truth and the work would silently disagree — the executor thinks it's finished, the database thinks the job is still pending. That gap is where the worst bugs live.
Finishing Is Cheap. Acceptance Is Durable.
So the executor's local sense of 'done' is treated as a proposal, never a fact. It computes a result, then submits it to the control plane, which validates it and commits a state transition in one atomic database write. Only that commit is completion. A returned function is a rumor; a committed transition is truth.
This is what makes the whole thing survivable. Kill the executor after it computed but before it reported — the control plane never saw acceptance, the lease expires, the job returns to the queue, and it runs again. Kill it after the control plane committed — the job is genuinely done and won't be redone. The one moment that matters is the durable commit, and it lives on the host that owns the truth.
Replay Must Be Safe
There's a subtlety: what if the executor computed, the control plane committed, but the acknowledgment back to the executor got lost? The executor doesn't know it succeeded, so it retries — and now the same result arrives twice. The system has to make that harmless. Recall does it with identity: a resubmission of an already-accepted result returns the existing record instead of creating a duplicate. Retrying is always safe because acceptance is idempotent. On top of that, when the control plane restarts, it reconciles any job left mid-flight by a crash. 'Accept once, replay safely, heal on startup' is how two hosts stay honest across an unreliable network.