# `Cairnloop.Governance.Telemetry`
[🔗](https://github.com/szTheory/cairnloop/blob/main/lib/cairnloop/governance/telemetry.ex#L1)

Bounded telemetry for governed tool proposal events.

Metadata is constrained to allow-listed low-cardinality values so telemetry remains
safe for observability and never becomes a durable workflow record (D-29).

Telemetry is emitted **alongside**, never instead of, `ToolActionEvent` inserts.
Emit calls belong AFTER a successful `with` pipeline — not inside the `with` clause
list (mirrors `emit_review_task_event` from `KnowledgeAutomation`).

## Events

* `[:cairnloop, :governance, :proposal_created]` — new proposal co-committed
* `[:cairnloop, :governance, :proposal_blocked]` — proposal blocked (and persisted)
* `[:cairnloop, :governance, :proposal_duplicate]` — idempotent duplicate returned

# `emit`

Emits a governance telemetry event.

Only accepts events in `@events`. Unknown events are silently dropped (guard clause).
All outcome/tier/mode values are normalized against allow-lists before emission to
prevent high-cardinality label leakage.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
