A rolling-summary sink over a standalone Memory: each compaction's summary, and its atomic documents where the
policy keeps them, filed per target scope, replacing the ones the target's last upsert filed.
Where a learning layer runs (an update with turnScopes), the targets take the turn's scope ids and each upsert is
one memory write recorded through the turn's recorder: its candidate names the traces it will insert (their ids
named before the write) and forget (with their snapshots), and the recorder notes a session row for each of the
compaction's contributors, so forgetUser for any of them finds the session; every new trace is written before any
old one is forgotten; a failure before the forgets takes back what the upsert wrote, a failure among them keeps the upsert with
what it did forget, and its kept verdict names what it inserted and forgot. A text that did not change keeps its
trace while that trace is live (one deleted since is filed again), an upsert that changes nothing writes nothing and
no row, and one sink's recorded upserts run one at a time. A freeze and a forgotten user resolve with nothing
written; an upsert the layer refuses for any other reason, or one the sink cannot record (no recorder, or a facade it
cannot read back, delete and restore by trace id), rejects having written nothing.
What a target's last upsert filed is kept in the process, so after a restart the first upsert of a target replaces
nothing it did not file itself; the same holds for a summary a revert brought back, which stays beside the next
upsert's.
A rolling-summary sink over a standalone
Memory: each compaction's summary, and its atomic documents where the policy keeps them, filed per target scope, replacing the ones the target's last upsert filed.Where a learning layer runs (an update with
turnScopes), the targets take the turn's scope ids and each upsert is one memory write recorded through the turn's recorder: its candidate names the traces it will insert (their ids named before the write) and forget (with their snapshots), and the recorder notes a session row for each of the compaction's contributors, soforgetUserfor any of them finds the session; every new trace is written before any old one is forgotten; a failure before the forgets takes back what the upsert wrote, a failure among them keeps the upsert with what it did forget, and its kept verdict names what it inserted and forgot. A text that did not change keeps its trace while that trace is live (one deleted since is filed again), an upsert that changes nothing writes nothing and no row, and one sink's recorded upserts run one at a time. A freeze and a forgotten user resolve with nothing written; an upsert the layer refuses for any other reason, or one the sink cannot record (no recorder, or a facade it cannot read back, delete and restore by trace id), rejects having written nothing.What a target's last upsert filed is kept in the process, so after a restart the first upsert of a target replaces nothing it did not file itself; the same holds for a summary a
revertbrought back, which stays beside the next upsert's.