Tideline
Records & origins
Everything Tideline knows is a record in memory/facts.jsonl. A record is more than text: it carries the kind of fact it is, how durable it is, who wrote it, and the edges that connect it to the rest of your memory.
Segments#
The segment says what kind of fact this is. It sets the default tier, importance, and decay rate, and it decides whether the write-gate treats the fact as authoritative (owner-only) or descriptive.
| Segment | Meaning | Authoritative? |
|---|---|---|
identity | Who you are | Yes (owner-only) |
preference | How you want things done | Yes (owner-only) |
correction | An explicit fix to a prior belief | Yes (owner-only) |
relationship | People in your life | No |
project | Work, conventions, goals | No |
knowledge | Durable facts you stated | No |
context | Ongoing situational state (fades fast) | No |
Origin: owner vs. channel peer#
Every record is stamped with an origin. This is the load-bearing privacy boundary: owner memory and each channel peer's memory are scoped so one never surfaces in the other's recall.
MemoryRecordOrigin
type MemoryRecordOrigin = | { kind: "owner" } | { kind: "channel"; channelId: string; // which channel conversationId: string; // which conversation sessionKey: string; // which session accountId?: string; // multi-account channels };- owner facts are recallable across all your sessions, and invisible to peers.
- channel facts are recalled only when channel, conversation, and session all match — different chats from the same person stay isolated.
- A legacy record with no origin is treated as owner (back-compat).
The record#
The fields that are live in v1:
| Field | What it is |
|---|---|
memoryId | Stable unique id |
content | The fact (capped at 1000 chars) |
segment / tier | Kind of fact / durability class |
importance | 0..1, drives ranking and decay |
decayRate, accessCount, lastAccessedAt, createdAt | Decay + reinforcement bookkeeping |
lifecycle | active / archived / pruned |
createdBy | The origin tag |
sourceType | Provenance — drives the write-gate and trust |
links | Typed edges (see the link graph) |
embedding | Vector for the recall recovery lane |
subjectKey | Single-value slot for auto-supersession |
metadata | Optional JSON sidecar |
Reserved fields
Some fields are persisted but dormant in v1, reserved for later phases:
confidence and status (epistemic trust), validFrom (bi-temporal valid-time; validTo is partially live and gates recall), and sourcePointers / modality / mediaPointer(cascade-purge and media). They're in the schema now so the data accrues before the features that use it land.In the code
The full schema, segment defaults, and origin helpers are in src/agents/memory/records.ts.