One Event Store
Ingest events once. Replay object changes, investigate collected data locally, and query compact summaries without loading every event.
.sum5-Minute Columnar Summaries → Daily Packets → ChartsAccept the Change
A PIL record arrives under a negotiated Definition. The seed journal supports recovery; recent records stay in native memory for live search and replay.
Bad records go to Lost Events with their original content.
event_idUUIDv7idTransaction UUIDrevision_id17stateauthorizedQuery Paths
Time, object identity, and text each have
a useful way into the journal.
Time & Text
Bound a search by time, then refine by fields or text. Collect the matching hours for local investigation.
Time Trie + TantivyObject Replay
Follow one object’s revisions. The optional collection index supports history and replay without rebuilding the full object.
collection.idx → WritesAnalytics
Render counts, errors, and duration distributions from summaries. Daily totals also feed weekly, monthly, and yearly rollups.
.sum → Analytic ColumnsRetention is configured per resource and branch. Completeness and lost events remain visible. Scheduled reports and external alert delivery are still planned.
PIL Definitions
Field positions, types, and dictionaries live in a shared Definition. A record can carry complete state or a single changed field.
Definitions are encoded as CBOR. CDDL describes their structure; the codec enforces the remaining semantic rules.
Download the Definition Schema{
"definition": "payment/transactions",
"pil": 0,
"version": 0,
"fields": [
{ "name": "id", "type": "UUID" },
{ "name": "revision_id", "type": "U16" },
{ "name": "state", "type": "STRING",
"values": ["pending", "authorized", "captured"] }
]
}state: authorizedOmitted fields remain omitted.Storage Measurements
1,000,000 synthetic events. 30 days. Five resources.
Indexes, journals, and metadata included.
153.6 KB median daily summary transfer across the fixture’s resources.
168.4 bytes/event including optional collection indexing and Tantivy in this fixture.
Expanded JSONL: 428.60 MB. Gzip-6 JSONL: 25.44 MB, without equivalent search indexes.
These are development measurements, not production guarantees. The linked report includes allocation, coverage, and format tradeoffs.


Search & Investigation
Search the journal, inspect a change, and look at the pattern. Snoot brings the detail and the summaries into the same research session.