dev.bastienrobert.memory.record

A single durable memory belonging to the user. Deliberately one generic type: specialising into fact/preference/project/event types is premature until real requirements demand it. Retrieval-specific state (BM25 scores, vector ids, index cursors, caches) MUST NOT be stored here — it is derived data owned by whichever memory engine indexes this record. Consumers MUST preserve properties they do not recognise: an implementation that rewrites a record after dropping unknown fields destroys data written by a newer one.

Details · record, key tid
Kindrecord
Record keytid
Authoritymemory.bastienrobert.dev
Indexed
cid bafyreify7srhighvy7i5zvatgjhamhy3enjihepshdoiy7o5orexhz6r4q

Checks

Valid
  • unlimited-string defs.main.record.properties.kindNo maxLength, maxGraphemes or format limits this string.
  • unlimited-string defs.occurrence.properties.precisionNo maxLength, maxGraphemes or format limits this string.
JSONDownload
{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "main": {
      "description": "A single durable memory belonging to the user. Deliberately one generic type: specialising into fact/preference/project/event types is premature until real requirements demand it. Retrieval-specific state (BM25 scores, vector ids, index cursors, caches) MUST NOT be stored here — it is derived data owned by whichever memory engine indexes this record. Consumers MUST preserve properties they do not recognise: an implementation that rewrites a record after dropping unknown fields destroys data written by a newer one.",
      "key": "tid",
      "record": {
        "properties": {
          "content": {
            "description": "The memory itself: one self-contained statement that still makes sense months from now.",
            "maxGraphemes": 2500,
            "maxLength": 10000,
            "type": "string"
          },
          "createdAt": {
            "description": "When the memory was first stated.",
            "format": "datetime",
            "type": "string"
          },
          "kind": {
            "description": "Coarse classification. Open vocabulary: an unknown value is legal and must not be dropped by a consumer.",
            "knownValues": [
              "fact",
              "preference",
              "decision",
              "context"
            ],
            "type": "string"
          },
          "occurredAt": {
            "description": "When the remembered event happened, independent of createdAt. Omit when unknown.",
            "ref": "#occurrence",
            "type": "ref"
          },
          "provenance": {
            "description": "Where this memory came from. Advisory: consumers must tolerate its absence.",
            "ref": "#provenance",
            "type": "ref"
          },
          "scope": {
            "description": "Application label within a Space, never an access boundary. Use separate Spaces for different trust boundaries.",
            "maxLength": 512,
            "type": "string"
          },
          "supersedes": {
            "description": "Older memories replaced by this statement, several when it merges them into one. Keep history; consumers only mask replacements within the same authorized Space and repo.",
            "items": {
              "format": "at-uri",
              "type": "string"
            },
            "maxLength": 20,
            "type": "array"
          },
          "updatedAt": {
            "description": "When the memory was last revised, if ever.",
            "format": "datetime",
            "type": "string"
          }
        },
        "required": [
          "content",
          "createdAt"
        ],
        "type": "object"
      },
      "type": "record"
    },
    "occurrence": {
      "properties": {
        "from": {
          "format": "datetime",
          "type": "string"
        },
        "precision": {
          "description": "Precision of the source statement; year and month dates are anchors, not exact event dates.",
          "enum": [
            "year",
            "month",
            "day",
            "instant"
          ],
          "type": "string"
        },
        "to": {
          "format": "datetime",
          "type": "string"
        }
      },
      "required": [
        "from"
      ],
      "type": "object"
    },
    "provenance": {
      "properties": {
        "agent": {
          "description": "The agent that wrote the memory, e.g. 'claude-code', 'codex'.",
          "maxLength": 256,
          "type": "string"
        },
        "client": {
          "description": "OAuth client id of the application that wrote it.",
          "format": "uri",
          "type": "string"
        },
        "sourceUri": {
          "description": "What the memory was derived from, if anything.",
          "format": "uri",
          "type": "string"
        }
      },
      "type": "object"
    }
  },
  "id": "dev.bastienrobert.memory.record",
  "lexicon": 1
}