3.2 Synthetic Event Payloads

Each of the five synthetic event types (§2.6) carries a MessagePack map in payload, with the schema below. The fields are catalogue fields, defined in eventd's fragment /usr/share/evman/eventd.evman or in the kernel's (PGSS §6.10), and each is stored as nested maps, one per segment of its path: store.shard-count is the value at {store: {shard-count: …}}. A query names a field by its dotted path, and reads an array field whole.

No field is ever nil. A field with no value is left out of the map (PGSS §6.5), and the table below says when each one can be.

None of them is at a header field's path, so none is suppressed. The boot and the CPU are read from the columns as event.boot.guid and event.cpu (§3.1), and no payload repeats the boot.

3.2.1 eventd.daemon.started #

FieldTypeContents
store.restartedboolTrue when committed rows or receipts for this boot already existed at startup; false on the boot's first successful eventd start.
store.shard-countunsigned integerActive shard count after resolving StorageShards.
store.resume.cpusarray of unsigned integerOne entry per logical CPU, in ascending order.
store.resume.sequencesarray of unsigned integerParallel to store.resume.cpus: for the CPU at the same index, the highest sequence contiguously accounted for after receipt/ring reconciliation, or 0.

There is no boot ID in the payload: the record's own event.boot.guid is the boot it describes.

store.restarted is the boot-boundary decision of §3.7 recorded as data, which makes "did eventd crash during this boot, and how often" answerable by query rather than by inference from gaps.

3.2.2 eventd.daemon.stopped #

FieldTypeContents
store.committed.cpusarray of unsigned integerOne entry per logical CPU, in ascending order.
store.committed.sequencesarray of unsigned integerParallel to store.committed.cpus: the highest sequence contiguously covered by committed receipts for that CPU this boot, or 0 if none was.

When eventd cannot read its committed receipts at shutdown, both arrays are left out and the payload is an empty map. It never writes zeroes in their place, so a 0 is always a real value.

Diagnostic only. Startup derives recovery coverage from committed receipt ranges, never from this payload (§2.2).

3.2.3 eventd.events.lost #

FieldTypeContents
buffer.cpuunsigned integerThe CPU whose ring the gap was found on.
loss.sequenceunsigned integerFirst missing sequence number.
loss.sequence-lastunsigned integerLast missing sequence number.
loss.countunsigned integerHow many are missing.
loss.preceding-timetimestampThe last event successfully processed before the gap. Absent when none is known.

The time of the event that revealed the gap is not a payload field: it is the record's own event.time (§2.5).

The CPU appears both here, as buffer.cpu, and in the cpu_id column (§2.5). The column is what a WHERE event.cpu == N predicate matches and what a query presents as event.cpu; the payload field is what WHERE buffer.cpu == N matches, and what a reader of the stored payload sees without joining anything.

3.2.4 eventd.config.changed #

FieldTypeContents
config.key.pathstringAlways Machine\System\eventd.
config.namestringThe value's name under config.key.path.
config.type-previousunsigned integerThe registry type the value had before, as its REG_* number: 4 for REG_DWORD, 11 for REG_QWORD. Absent when no value was stored.
config.value-previousunsigned integerThe value before. Present exactly when config.type-previous is.
config.typeunsigned integerThe registry type the value has now, numbered the same way. Absent when the change removed the value.
config.valueunsigned integerThe value now. Present exactly when config.type is.

Every value eventd reloads at runtime is a REG_DWORD or a REG_QWORD (§A), so both values are integers, and a query can compare them as numbers.

A side is absent when no value is stored, even though eventd's compiled default then applies. A stored value of the wrong type is reported as the type eventd expects, holding the integer it actually uses.

3.2.5 eventd.store.quarantined #

FieldTypeContents
store.kindstringevent, log or metric.
store.shardunsigned integerThe shard, for the event store. Absent for the log and metric stores, which are not sharded.
outcome.detailstringHuman-readable description of what eventd found.

outcome.detail is diagnostic text and its wording is not stable. store.kind and store.shard are the fields worth alerting on. The metadata database is never reported here: a damaged one is rebuilt (§3.5) and writes no record.

Edit this page