Receiver-Owned Transaction Acceptance

When an AI agent changes a system of record,
who decides it was accepted?

Authorized to act is not the same as accepted by the receiver.

FireProof sits at the receiver's transaction boundary. It verifies an AI-initiated change against the receiver's current business state, commits the business change and final acceptance record together, and produces portable signed evidence of what the receiver accepted — or rejected.

The gap after authorization

Identity, policy and approvals can decide whether an agent may attempt an action. They do not necessarily tell the receiving system whether that exact transaction is still acceptable against its state at commit time.

Example: an agent is authorized to raise a customer's credit limit from €50k to €80k while the account is active, risk band B, record version 17.

Before the write reaches the system of record, the account changes to risk band D and version 18. The agent can still be correctly authenticated. The tool call can still be permitted. The original transaction should no longer be accepted.

FireProof makes the receiver recompute that decision from its own live state. If the expected state no longer matches, the receiver rejects the transaction and records that final result without applying the business change.

Where FireProof fits

FireProof is not an IAM product, AI governance platform, agent framework or observability layer. It is designed to complement those controls at the write boundary.

Identity / access
Who is the agent, and may it call this capability?
Policy / approval
Does policy permit the proposed action?
Receiver acceptance
Is this exact mutation acceptable now, against the receiver's current state?
Audit / evidence
What durable evidence is retained after the decision?

The distinction: an upstream authority can prove “this action was authorized.” FireProof is designed to prove “this receiver verified that exact action against its own state and accepted or rejected it.”

The acceptance boundary

FireProof is designed for receiving systems with a controllable transactional boundary. It is not a universal proxy for arbitrary APIs.

AI agent / orchestration | v Identity / policy / approval | v Signed, scoped authorization | v FireProof receiver 1. verify trust + exact request 2. lock/read current business state 3. enforce state, time and replay fences 4. accept or reject | v same receiver transaction business change + final acceptance record | v post-commit receiver-signed result | v portable offline-verifiable evidence

If the commit result is uncertain, the receiver checks the final acceptance record instead of blindly retrying the business write. Evidence signing happens after commit and cannot mutate the business row.

Built and tested

The same acceptance model has been exercised across two different business profiles and two different transactional database engines. The implementations are prototypes, not claims of production ERP deployment.

Profile Receiver What was exercised
Supplier master change PostgreSQL Signed authorization, exact-state matching, stale/expired/tampered/replay rejection, atomic business change + final acceptance record, post-commit receiver-signed result and offline bundle verification.
Customer credit limit MySQL / InnoDB Same semantic model in a different domain and engine, including stale-risk rejection, nonce fencing, replay recovery, lost commit acknowledgement recovery, and forced rollback after both transactional writes.
Python verifier open source
Standalone offline verification of trust, signatures, canonicalization, commitments and acceptance-record linkage. Verification does not require access to the private receiver runtime or an online FireProof service.
Independent Go reviewer
A second implementation provides an independent semantic check. The full Supplier profile path is implemented independently; the extracted generic profile kernel is also tested against the Customer Credit semantics.
Java 17 receiver
A separate receiver implementation exercises the Supplier acceptance profile and produces bundles accepted by the independent verification path. It is a synthetic receiver implementation, not a production ERP connector.
Fail-closed transaction semantics
In the MySQL receiver test, a forced failure after the business update and acceptance-record insert — but before COMMIT — rolls both back. A simulated lost commit acknowledgement is resolved without a second business mutation.
What receiver-owned evidence can establish authorization and request were bound to this action expected business state was checked at the receiver replay and nonce fences were enforced business change and final decision shared the transaction boundary receiver-signed result was produced after durable commit evidence can be verified later without the agent platform

Deliberate limits: FireProof does not prove an external bank transfer completed, that a legal obligation was satisfied, that wall-clock time is objectively true, or that key custody is secure. It proves the receiver-owned acceptance facts encoded by the profile.

Open-source boundary

The protocol specification and Python verifier are Apache 2.0 so the evidence format can be inspected and verified independently. Receiver implementations remain separate.

Component Purpose Status
fireproof-protocol Evidence profile specification, schemas, canonicalization rules and conformance fixtures Open — Apache 2.0
fireproof-verifier Python offline verifier for DSSE/JCS/Ed25519 trust and commitment linkage Open — Apache 2.0
fireproof-receiver Receiver runtimes and transactional acceptance experiments Private
fireproof-reviewer Independent Go reviewer and extracted semantic profile kernel Private
fireproof-jvm Java 17 independent receiver implementation Private

Contact

FireProof is an independent infrastructure project, not a SaaS dashboard. The useful conversation is with teams building write-enabled AI agents or consequential automation into finance, procurement and other systems of record.

If receiver-owned transaction acceptance maps to a real boundary in your architecture, reach out directly. The project is open to technical evaluation, integration discussions and design-partner conversations.