Data Lifecycle
Ingest events once. Replay object changes, investigate collected data locally, and query compact summaries without loading every event.
Accept the Change
Data seeds are Trie-Trunk’s implementation of PIL. Each seed arrives under a negotiated Definition. The seed journal supports recovery; recent seeds stay in native memory for live search and replay.
Rejected data seeds go to Lost Events with their original content.
event_idUUIDv7idTransaction UUIDrevision_id17stateauthorizedPlatform Taxonomy
Caches in the trunk.
Services branch out.
Select a Tier to Highlight
Separate working spaces, such as prod, test, and sand. Each has its own hollow in the trunk.
Trunk › prod › payments › transactions › info › writeAnalytics
Pre-Computed
Columnar Aggregates
Query the aggregate, not every event. Counts, errors, and numeric statistics are computed ahead of the view and collected independently of event detail.
Combine stored aggregates for broader time views. Collect individual events when the investigation needs their detail.
Retention
Give Each Branch
Its Own Budget
Keep the depth where it matters. Explore different storage allocations for services, resources, levels, and access.
prod / payments / transactions
debug / read
192 GiB Storage Quota
Explore a storage budget for the selected scope.Explore Cache Quotas in Snoot ↗Query 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 matching seed packs 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.
Data Definitions
Define field positions, types, and dictionaries once. Data seeds share that definition and can carry complete state or a single changed field.
Trie-Trunk data definitions are an implementation of PIL Definitions.
{
"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.