56. Release and approval¶
A defective advisory can cost a harvest, so releasing farmer-facing advice is a controlled workflow rather than a single send action. The workflow freezes the audience, exposes every warning, and separates preparation from approval.
56.1 Maker-checker¶
The operator who prepares a release cannot approve it, and the reviewer must see every distinct message variant before it goes out.
- Audience freezes the resolved recipient records; it is not a query re-run at send time.
- Run binds an advisory execution to that audience snapshot.
- Prepare reports all failing reasons at once; warnings require an explicit decision.
- Review shows every distinct message variant with counts and masked identities.
- Execute dispatches through a worker; retries contact only the recipients that previously failed.
flowchart LR
AUD[Audience snapshot] --> RUN[Run]
RUN --> PREP[Prepare<br/>all warnings surfaced]
PREP --> REV[Review<br/>every variant]
REV --> EX[Execute<br/>dispatch + targeted retries]
56.2 What "done" means¶
Release completion means the bundle actually reached its destination, not merely that it was produced. This matters most with export-style transport: rows written to a file are only submitted; if the file never reaches its pickup location, the release is still partial. Delivery therefore has explicit outcomes — completed, withheld, or failed — consistent with the completion semantics described in Delivery orchestration.
Separation of preparation from approval is a core property of this workflow; see Operator consoles for the role model behind it.