Execution Layer for Odoo
Evidence: receipts and history.
The evidence screens of the Execution Layer: the immutable action log, the Why panel on every refusal, field-level before and after on every write, per-record history, stored Action Receipts, export trails, and alert delivery proof.
Evidence is the pillar the whole product exists for: not “the AI said it worked” but “here is what actually happened, provable later”. This page walks the five evidence screens.
Actions: the complete log
Every AI call lands here: when, who, tool, model, records touched, status, error code, a Context column, the outcome summary, duration, auth kind, and the client reference. Filter by Today, Refused, Failed, Writes, or Context-enriched. Rows are immutable.
A refusal opens to a “Why”
Opening a refused row shows a prominent Why panel: the plain-language reason, the structured code the client received (one of the 42 error codes), and a “change it here” pointer to the exact configuration screen. A refusal is never a mystery, for the AI or for you.
A write opens to before → after
A write’s detail carries the field-level before and after snapshot, the records touched, the context enrichment used, and the evidence-integrity block: verification status, the position in the hash chain, the row hash.
Record history: everything AI ever did to one record
Search a model and a record, and see every AI touch in order: who, when, the operation, the
field, before, after, each row linked to its audit entry. AI clients can read the same history
through the get_record_history tool, and that read is itself audited.
Receipts: the stored proof of every verified write
Every verified write stores its Action Receipt: Executed, Persisted, Verified, Recorded,
with the verification result and the exact JSON returned to the AI client. If a write commits
but cannot be verified, the receipt honestly reports verified: false with the reason, and an
alert can fire; you are told loudly rather than lied to. The mechanics live in
verified execution.
Messages
Since version 1.1, Evidence → Messages is the log of every message the AI sent: destination, kind, recipients reached, a preview, the human gate it passed (confirmed, approved, or unrestricted), and the linked audit entry. The whole messaging story, screens included, lives in messaging: Discuss to WhatsApp.
Exports and alerts
- Exports. Every time AI exported data out of Odoo: who, what, how many rows. Data leaving the system gets its own trail.
- Alerts. Every alert an alert rule fired, with its delivery state: sent, pending, or failed with the error. This is proof that notifications actually went out, not just that a rule exists.
How the chain resists tampering
The evidence chain is hash-chained and protected at the database level by a trigger, not just the ORM. The only deletion path is the retention cron, which purges a contiguous prefix and records an anchor, so the retained chain stays verifiable. Tamper-evident, honestly stated: a database administrator with raw SQL access is outside any module’s control.
