Tiramemsu

One record, three questions

Tiramemsu articles · 13 October 2026 · a guide to the three papers

Tiramemsu rests on one design decision: a statement is a record with its own id and two clocks.

(e, s, p, o, a, d, v1, v2)   # id · triple · [a, d) when we knew it · [v1, v2) when it was true

Because s and o can be ids, statements can talk about statements: a confidence on a fact, a source for that confidence, a membership of a fact in a conversation. Because nothing is deleted and both clocks are kept, the past can be read back exactly as it was. Three papers each ask one question about this record. This page follows one small example through all three.

The example

e1 = (:FRA, :route, :LHR)          # a fact
e2 = (e1, :distance, 655)          # a layer on the fact
m  = (e1, sys:inGraph, trip42)     # the fact belongs to a conversation
c  = (m, :confidence, 0.7)         # how sure we are that it belongs there

Later the route's valid time turns out to be wrong, and an agent corrects it.

1. Does memory stay grounded?

Layered Bitemporal Graphs asks what happens to e2, m and c when e1 is retracted, corrected or read in the past. Its answer is one operator, the ground core: the largest part of any view in which every statement can find what it points at.

Checking the engine against these hypotheses found four gaps, all repaired in 0.4.0. Plain-language version: memory that stays grounded.

2. Can the structure be read back?

Metagraph Encodings over Identified Triples takes the same record and builds richer structures on it: hyperedges, edges between edges, containers like trip42. Writing them is one row per clause. Reading them back needs an exact image, a list of conditions such as "every edge has an input" or "no two edges have the same ends". Each condition is shown to be necessary, with a store that breaks only that one.

The example shows why identity matters here. c is a confidence on the membership m, not on the fact e1. It has reference rank 2, where a confidence on e1 would have rank 1. They are different claims and stay apart. The paper also shows that a dispute of m can be valid years after e1 stopped being true, if snapshots keep the referents of what they assert. It shows that reference rank sets the number of bulk-load batches and bounds the rounds of a retraction cascade. Plain-language version: cheap to write, careful to read.

3. What can leave the store intact?

When Is a Temporal Statement Store a Statement Graph? asks the reverse question: which records can be exported to OneGraph's Statement Graphs or RDF-star without inventing or renaming an occurrence. The answer is closed and acyclic sets, and every set has a greatest such part, the export kernel.

After the correction, the current snapshot holds the new e1', its layers and the lineage record pointing at the retracted e1. Because of that dangling lineage, the snapshot is not exportable as a whole. The full history is, because records are never deleted. Export the history, assert the snapshot, quote the rest, and both clocks travel into RDF-star losslessly. Had the correction's patch named e2, it would have created a two-record cycle. A check on the replay batch can reject that before anything is written. Plain-language version: what leaves the store intact.

How the three fit

QuestionKey objectEngine consequence
Paper 1Is a view consistent?Ground coreLive endpoints, cascade, closed retention, date guards (0.4.0)
Paper 2Does a structure decode?Exact imageWhat a validator must check; not enforced by the engine
Paper 3Does a set export?Export kernelOne bit per record and an acyclic-replay rule; not yet in the engine

All three use the same graph fact in different guises. A statement is only as good as what it points at: grounded in paper 1, of bounded rank in paper 2, in the kernel in paper 3. Each paper says plainly what it does not show. None reports performance numbers, and none has been peer reviewed.

Read them

All papers