Grantline Docs
Reference

Events

The current registry, escalation, Vault, executor, and facade events and what each one proves.


Committed events are the current onchain evidence surface. An event can show that a state transition or execution step committed, but it cannot replace the transaction receipt: a reverted transaction leaves no events behind. See Records for how events fit into the broader traceability model.

MandateRegistry

EventFieldsWhat it records
MandateCreatedmandateId indexed, vault indexed, agent indexed, parentMandateId, delegationDepth, MandateRules rules, PreflightRules preflightRules, validAfter, validUntil, createdBy, createdAtCreation of a Mandate and the rules, Preflight rules, and validity window written at creation time.
MandateUpdatedmandateId indexed, MandateRules rules, PreflightRules preflightRules, validAfter, validUntil, updatedBy indexed, updatedAtA committed replacement of the stored rules, Preflight rules, and validity window. Effective lineage rules still apply when the evaluator reads them.
MandateRevokedmandateId indexed, revokedBy indexed, revokedAtRevocation of a Mandate. A revoked ancestor also makes descendant lineage inactive during evaluation.
MandatePausedmandateId indexed, pausedBy indexed, pausedAtPausing of a Mandate. A paused ancestor blocks execution, escalation submission, and new child Mandate creation.
MandateUnpausedmandateId indexed, unpausedBy indexed, unpausedAtUnpausing of a previously paused Mandate.
NonceReservationCreatedmandateId indexed, agent indexed, nonce indexed, digestReservation of a nonce for one escalation digest.
NonceReservationConsumedmandateId indexed, agent indexed, nonce indexed, digestConsumption of an escalation reservation when the approved plan executes.

The registry events describe authority and nonce state. MandateUpdated carries the rules and validity window supplied to that update, while getEffectiveRules, getEffectivePreflightRules, and getEffectiveValidityWindow are still needed to see the inherited result used by the evaluator.

Grantline (facade)

EventFieldsWhat it records
VaultCreatedvault indexed, controller indexed, owner indexed, authority, implementation, versionA new Vault proxy was created and registered.
VaultPausedvault indexed, pausedBy indexedA Vault controller paused the Vault. Execution is blocked until unpause.
VaultUnpausedvault indexed, unpausedBy indexedA Vault controller unpaused the Vault.
MandatePausedmandateId indexed, pausedBy indexedA Mandate was paused through the facade.
MandateUnpausedmandateId indexed, unpausedBy indexedA Mandate was unpaused through the facade.
NonceCancelledmandateId indexed, agent indexed, nonce indexed, cancelledBy, cancelledAtAn unused, unreserved nonce was permanently invalidated by the agent or Vault controller.
ActionPlanSubmittedactionDigest indexed, mandateId indexed, agent indexed, submittedByA signed plan was submitted to the escalation manager for owner review.
ActionPlanExecutedactionDigest indexed, mandateId indexed, agent indexed, vault, nonceA plan completed executor-side action processing. The executor's ActionPlanExecuted event carries the full detail.

EscalationManager

EventFieldsWhat it records
EscalationSubmittedactionDigest indexed, mandateId indexed, agent indexed, submittedBy, nonce, nativeAmount, nativeUsdValue, nativeBalanceUsdValue, submittedAtA complete plan and signature were stored after evaluation returned ESCALATE, and its nonce was reserved.
EscalationApprovedactionDigest indexed, mandateId indexed, controller indexed, approvedAtThe current Vault controller approved the stored escalation while its Mandate lineage was active. It does not prove later execution.
EscalationDeniedactionDigest indexed, mandateId indexed, controller indexed, deniedAtThe current Vault controller denied a pending escalation.
EscalationExecutedactionDigest indexed, mandateId indexed, agent indexed, nonce, executedAtAn approved escalation completed executor-side action processing and was marked executed.

The manager stores the full ActionPlan and signature behind the digest. Query getEscalation when an event identifies a digest; the event alone does not contain the original parameters or signature.

The manager also exposes global, Vault-scoped, and agent-scoped digest indexes for direct onchain lookup. These indexes retain the full escalation history, while the events remain the authoritative evidence for when submission, approval, denial, and execution transitions committed.

Vault

EventFieldsWhat it records
AuthorityUpdatedpreviousAuthority indexed, newAuthority indexedA change to the address allowed to call the Vault's execution surface.
ExecutionAttemptedauthority indexed, target indexed, value, dataHash, success, resultHashA low-level call made through the Vault, including its target, native value, calldata hash, call result, and returned-data hash.
NativeDepositedfrom indexed, amountNative asset received by the Vault.
NativeWithdrawnto indexed, amountOwner-controlled native withdrawal from the Vault.
OwnershipTransferredpreviousOwner indexed, newOwner indexedA change to Vault ownership. The owner controls custody and escalation approval.
TokenDepositedtoken indexed, from indexed, amountToken custody received by the Vault.
TokenWithdrawntoken indexed, to indexed, amountOwner-controlled token withdrawal from the Vault.

ExecutionAttempted is low-level call evidence, not an independent authorisation result. The executor's committed ActionPlanExecuted event and the transaction receipt are needed to establish that the complete plan succeeded.

VaultExecutor

ActionPlanExecuted has this exact shape:

event ActionPlanExecuted(
    bytes32 indexed actionDigest,
    uint256 indexed mandateId,
    address indexed agent,
    address vault,
    uint256 nonce,
    uint256 nativeAmount,
    uint256 nativeUsdValue,
    uint256 actionCount,
    uint256 nativeBalanceAfter,
    uint256 nativeBalanceUsdValue
);

It records the digest that was signed, the Mandate and agent, the Vault used, the consumed nonce, aggregate native amount, USD valuation of the native outflow, the number of actions, projected native balance after evaluation, and USD valuation of the projected remaining balance. Because it is emitted after the action loop, its presence in a committed transaction is evidence that all actions reached the executor's successful completion point.

What events do not prove

Events do not prove that a read-only evaluation was performed at a particular time, that an unsubmitted DENY was attempted, or that an offchain indexer or assembled receipt exists. Contract-side indexes identify stored records, while an EscalationApproved event proves approval of the stored digest and ActionPlanExecuted proves committed execution of that digest; the two events answer different questions.

Events emitted by a transaction that reverts are rolled back. For a failed executor call, inspect the receipt status and revert data, then use earlier committed registry or manager events to understand the authority state that led to the failure.

See Inspecting evidence for cast and explorer workflows.

Last updated on

On this page