Core Events

Canonical KYA-OS audit event families and lifecycle rules

Core Audit Events

The v1 producer-event schema defines a closed event vocabulary. Event names use stable dot-separated identifiers and carry a matching typed details family and phase.

Event families

FamilyRepresentative events
Sessionsession.established, session.rejected, session.expired, session.replay_rejected
Tooltool.call.started, tool.call.completed, tool.call.failed, tool.call.denied, tool.call.challenged
Proofproof.generated, proof.verified, proof.rejected
Delegationdelegation.issued, delegation.verified, delegation.rejected, delegation.revoked, delegation.cascade_revoked, delegation.outbound_attached
Authorizationauthorization.evaluated, authorization.approved, authorization.denied, authorization.step_up_required, grant.used
Consent and credentialsconsent.requested, consent.approved, consent.denied, credential.required, credential.verified, credential.failed
Configuration and keyskey.rotated, policy.changed, configuration.changed, integrity_suite.transitioned
Ledgerledger.epoch.started, ledger.epoch.transitioned, checkpoint.created, checkpoint.anchored, checkpoint.anchor_failed, evidence.disposed, projection.reconciled
Administrationaudit.source_high_water, audit.accessed, audit.exported, legal_hold.applied, retention.executed

See the live event schema for the normative enum and per-family detail requirements.

Lifecycle invariant

Every instrumented operation with a start phase emits:

  1. one stable *.started or request event before the side effect; and
  2. exactly one terminal event for every return, throw, denial, challenge, timeout, cancellation, or retry-exhaustion branch.

For tool calls, terminal events are completed, failed, denied, or challenged. They share correlation and causation identity with the start event.

Loading diagram...

Identity and correlation

  • eventId is stable across byte-identical retries.
  • sourceId, sourceSequence, and previousSourceEventDigest describe the producer's durable order.
  • correlationId joins a request or workflow.
  • causationId points to the event that caused the current event.
  • session.ref, actor, responsibleParty, and resource use privacy-aware party references.
  • foreign MCP metadata and existing proof metadata remain intact; audit receipt metadata is additive.

Outcomes and reasons

Use the closed outcome vocabulary: succeeded, failed, denied, challenged, or unknown. Put a stable machine-readable reason code in reason.code; sensitive messages, request bodies, stack traces, credentials, and policy inputs belong in encrypted evidence.

Do not infer success from a missing terminal event. A missing terminal is an operational gap that must remain visible to reconciliation and monitoring.