The session is the wrong boundary

Chat applications usually treat the lifetime of the interaction as the lifetime of the task. When the tab closes, the active reasoning stops. When the context is truncated, earlier decisions disappear.

LibreTask separates the task from the interface. A task thread has a durable lifecycle. The workflow can pause while a person is away, then resume when a decision arrives.

Record events, then derive state

The system records meaningful actions as ordered events: a contract was revised, a plan was generated, a capability was invoked, an evaluation failed, a human decision arrived, or a delivery was produced.

The current state is reconstructed from that sequence. This is useful for recovery, but it also answers a more important product question: why did the system take this path?

A retry is a decision

Blind retries can duplicate an external side effect or consume a budget without improving the result. A governed system should know which capability failed, whether the failure is temporary, what retry policy applies, and whether an alternative is available.

Idempotency keys, capability-specific timeouts, and structured error types turn recovery from a generic loop into an explainable correction.

Waiting is part of execution

Human review may take minutes or days. A durable workflow should stop holding a live worker and persist its wait state. When the signal arrives, execution continues from that point.

This is the practical difference between a system that can run overnight and one that merely says it will.