No call places without consent re-read at dispatch
Not just when the call was queued. The same function that authorised the call at queue time runs again, fresh from the database, immediately before an attempt row is written — so consent withdrawn in between is honoured.
Every call stays inside the recipient's own local calling window
Enforced as database CHECK constraints — not application logic a bug could skip. A workspace can narrow the window; it cannot widen it, at the API, through a migration, or through direct SQL.
The blocked-dial log is evidence, not an error list
Every refused or deferred dial is written with the reason, the recipient's local time, and what was attempted — retrievable on its own route, the record a regulator would ask for.
The AI-disclosure and human-handoff steps cannot be removed
Re-inserted into a call flow on every write, whether or not a client tried to remove them. Their wording is editable; their existence is not — removing one from a request simply does not take effect.
A collections agent cannot skip the tone check
A collections-purpose voice agent cannot be saved without its tone being checked, and cannot be saved at all if the check finds debt-collection-threat language — enforced as a database CHECK constraint, not only as a review step someone could skip.
Nothing dials without a telephony provider credential
Every call sits at awaiting_provider — queue, compliance gate, retry backoff, and dispositions all work without one; the response says plainly that nothing was dialled.
A caller who asks for a human is transferred, full stop
There is no branch in the handoff route that refuses an explicit request, whatever else the call was about.