Attention is a governed resource — governed human notification (v2.66.0)
Every stack can send an SMS. What no stack governs is what crosses in it: a Python notification is a string plus a Twilio call — the assertion, its confidence, its provenance, and the condition that triggered it were all destroyed before sending. The human reads "ventas bajando" and acts.
axon treats a notification as what it is: the most dangerous egress in the system — the only one that interrupts a person and asks for action now. v2.66.0 makes it the third egress dual:
deliverwrites into systems of record ·documentproduces artifacts ·notifyspends human attention — and all three carry their lineage or refuse.
notify LowSales {
channel: sms
to: secret(ops.oncall_phone)
template: "Ventas 7d: ${resumen}"
window: 4h
provenance: attached
effects: <web>
}
The three laws
T933 — the evidence barrier. A guess reaching a person's pocket
labeled as fact is assertion-laundering at its fastest (T920's sibling,
harder consequence). cleared + flow values ⇒ refusal unless vouched.
Under attached, every bound value crosses WITH its label — and a v2.63.0
envelope ref appends its evidence line:
Ventas 7d: $12.4k [computed: 7/1204 rows, taint: untrusted]
The notification that explains its own evidence. Nobody else has this, because nobody else still HAS the evidence at send time.
T934 — recipient custody. to: accepts only a v2.48.0 secret-class
ref. A literal phone number in source is a compile refusal that TEACHES
the custody form. The value resolves at dispatch, tenant-scoped, inside
the enterprise transducer — it never rides source, IR, prompts, or
audit rows.
T935 — the mandatory window. A notify with no window: is an
unbounded interruption channel — refused, not defaulted. At-most-once-
per-window per recipient is enforced by a durable ledger across
replicas, and every suppression is a witnessed audit row: governed
silence is still accountable.
The trigger needs no new machinery
The founder's case — "notificar baja en las ventas" — is a daemon
(v2.4.0) running a flow whose aggregate (v2.63.0) computes the signal
(scan stats and all), an if that binds resumen only when the
declared threshold holds, and fire-on-resolution: the notify
fires post-run only when its ${ref} resolved. An unresolved ref is a
witnessed no-op. The alert's evidence is a computation, never a model's
opinion.
The proof
PCC NotificationProvenanceSoundness re-derives all three laws
from the stored IR at deploy — a hand-edited artifact that launders a
guess, drops the window, or smuggles a literal recipient is refuted
(409). And the runtime is fail-closed end to end: no transducer mounted
⇒ a structured refusal, never a silent drop and never a fabricated
"sent".
Honest perimeter
axon proves content discipline, recipient hygiene, and attention
governance. It does NOT prove vendor delivery (an accepted API call is
not a read message — receipts are declared tail), and recipient-level
consent is the adopter's legal obligation in v1 (notify.enabled is
per-tenant and OFF by default; messaging is consent territory). Three
channels, text templates — the boundary is the product, not the catalog.
See also
delivery_is_assertion_egress(v2.60.0) — the system-of-record dual.analysis_is_algebra_not_conversation(v2.63.0) — where the evidence in the notification comes from.rotation_without_revelation(v2.48.0) — the custody discipline the recipient ref rides on.