Sending requires your approval
Anything another person can see (a message, post, comment, ticket or form) needs an Approved<T> value. Only approve() can create one. It is tied to the exact content you were shown, it can be used once, and a declined send can’t be asked again in the same run.
let d = gmail.draft_reply(thread: t.id, to: t.from, body: text)?
match approve(d, reason: "Reply to {t.from}") {
Approved(a) => gmail.send(a)?
Declined => log.info("declined; draft kept")
}gmail.send(d)?
error send-needs-approval inbox.writ:12:12
gmail.send requires Approved<Draft>, found Draft
Approved<Draft> can only be created by approve()