Appendix B Audit Events

Every event described here is emitted into the kernel event subsystem (§13.3). Each type and field is defined in peipkg's evman fragment, installed as /usr/share/evman/peipkg.evman, which is the authoritative description; this appendix summarises it.

These types also appear in the Peios Events Index, a page per type, alongside every other event the system emits.

B.1 Types #

TypeTierWritten for
peipkg.package.installedessentialEach package a transaction installs, or a request to install one that failed
peipkg.package.upgradedessentialEach package a transaction moves to another version — upgrade, downgrade or undo — or a request to that failed
peipkg.package.uninstalledessentialEach package a transaction removes, or a request to remove one that failed
peipkg.repository.addedessentialA repository add and its trust ceremony, successful or failed
peipkg.repository.removedessentialA repository removal, successful or failed
peipkg.repository.reconfiguredessentialEach trust-relevant setting a repository add changed
peipkg.repository.refreshedstandardA refresh, successful or partly failed
peipkg.claim.changedstandardA claim grant or revoke, successful or failed
peipkg.transaction.recoveredstandardEvery run of peipkg recover, successful or failed
peipkg.action.authorisedessentialAn elevated action put to the operator, authorised or declined

An essential type is always written. A standard type is written unless the system's emission policy switches it off.

B.2 Payload fields #

Every record carries subject.token.sid, the user SID of the token peipkg ran under. A field that does not apply is absent.

FieldCarried byContent
transaction.idpackage, claimThe transaction; in a cross-root transaction, the transaction of the package's own root. Absent when none opened
object.package.namepackage, authorisedThe package
object.package.versionpackageThe version installed, moved to, or removed
object.package.version-previousupgradedThe version moved from
object.package.architectureinstalled, upgradedThe package's architecture
source.repository.nameinstalled, upgradedThe repository the package came from; absent for a local file
object.repository.namerepository, authorisedThe repository
object.repository.urladdedIts base URL
config.namereconfiguredThe setting, as the repository file names it
config.text, config.text-previousreconfiguredsignature_policy, new and old
config.value, config.value-previousreconfiguredAny other setting, new and old: days or an index version; 1 or 0 for allow_insecure_transport; the anchor count for trust_anchors
object.claim.role, object.claim.holderclaimThe role, and its new holder; no holder on a revoke
operation.succeeded-count, operation.failed-countrefreshedRepositories refreshed and failed
operation.succeeded-countrecoveredInterrupted transactions rolled back
operation.nameauthorisedlow-trust-provides, foreign-replaces, downgrade, remove-modified-file, stale-trust-state or stale-index
object.file.pathauthorisedThe modified file, for remove-modified-file
outcome.successall but reconfiguredWhether it succeeded; for authorised, whether the operator agreed
outcome.reasonpackage, claim, addedOn failure, peipkg's error code
outcome.detailall but reconfigured and refreshedOn failure, the error text; for authorised, the action as it was put

A failed package record with a transaction identifier was rolled back; one without was refused before any transaction opened. A cross-root transaction that fails while preparing its roots leaves no identifier on its records.

B.3 Where events do not appear #

  • Automatic recovery at the head of an ordinary operation writes nothing.
  • Declining the routine proceed prompt writes nothing.
  • A repository add refused before it names a base URL writes nothing.
  • A refresh that fails before reaching any repository writes nothing.
  • A stale repository refused because --allow-stale was not given writes no authorisation record; only proceeding with one does.
  • Enabling insecure transport, and installing unsigned content under an optional policy, write no authorisation record.
  • peipkg-compose writes nothing at all.

B.4 What emission depends on #

An audit privilege on the caller's token. Without it, emission fails, peipkg warns, and the operation proceeds unaudited, essential types included.

On a kernel with no emit call, emission is a silent successful no-op.

Edit this page