garden.engram.defs

hailey.at

Schema Diff

+158 -1

From

CID
bafyreigmwb7pksw...
Indexed At
2026-10-09 03:42 UTC
View this version

To

CID
bafyreigj52wgmns...
Indexed At
2026-10-10 00:39 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

13 breaking changes, 39 non-breaking changes.

Breaking Changes (13)
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "garden.engram.defs#termMatch", src: "garden.engram.defs#termMatch", tgt: "garden.engram.defs#termMatch.kind", kind: "prop", name: Some("kind") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "garden.engram.defs#termMatch", src: "garden.engram.defs#termMatch", tgt: "garden.engram.defs#termMatch.term", kind: "prop", name: Some("term") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "garden.engram.defs#termMatch", src: "garden.engram.defs#termMatch", tgt: "garden.engram.defs#termMatch.field", kind: "prop", name: Some("field") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "garden.engram.defs#byteSlice", src: "garden.engram.defs#byteSlice", tgt: "garden.engram.defs#byteSlice.byteEnd", kind: "prop", name: Some("byteEnd") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "garden.engram.defs#byteSlice", src: "garden.engram.defs#byteSlice", tgt: "garden.engram.defs#byteSlice.byteStart", kind: "prop", name: Some("byteStart") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "garden.engram.defs#snippetView", src: "garden.engram.defs#snippetView", tgt: "garden.engram.defs#snippetView.text", kind: "prop", name: Some("text") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "garden.engram.defs#snippetView", src: "garden.engram.defs#snippetView", tgt: "garden.engram.defs#snippetView.field", kind: "prop", name: Some("field") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "garden.engram.defs#snippetView", src: "garden.engram.defs#snippetView", tgt: "garden.engram.defs#snippetView.highlights", kind: "prop", name: Some("highlights") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "garden.engram.defs#vectorMatch", src: "garden.engram.defs#vectorMatch", tgt: "garden.engram.defs#vectorMatch.rank", kind: "prop", name: Some("rank") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "garden.engram.defs#vectorMatch", src: "garden.engram.defs#vectorMatch", tgt: "garden.engram.defs#vectorMatch.similarity", kind: "prop", name: Some("similarity") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "garden.engram.defs#keywordMatch", src: "garden.engram.defs#keywordMatch", tgt: "garden.engram.defs#keywordMatch.score", kind: "prop", name: Some("score") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "garden.engram.defs#keywordMatch", src: "garden.engram.defs#keywordMatch", tgt: "garden.engram.defs#keywordMatch.terms", kind: "prop", name: Some("terms") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "garden.engram.defs#keywordMatch", src: "garden.engram.defs#keywordMatch", tgt: "garden.engram.defs#keywordMatch.rank", kind: "prop", name: Some("rank") }
Non-Breaking Changes (39)
  • AddedVertex AddedVertex { vertex_id: "garden.engram.defs#byteSlice" }
  • AddedVertex AddedVertex { vertex_id: "garden.engram.defs#byteSlice.byteEnd" }
  • AddedVertex AddedVertex { vertex_id: "garden.engram.defs#byteSlice.byteStart" }
  • AddedVertex AddedVertex { vertex_id: "garden.engram.defs#keywordMatch" }
  • AddedVertex AddedVertex { vertex_id: "garden.engram.defs#keywordMatch.rank" }
  • AddedVertex AddedVertex { vertex_id: "garden.engram.defs#keywordMatch.score" }
  • AddedVertex AddedVertex { vertex_id: "garden.engram.defs#keywordMatch.terms" }
  • AddedVertex AddedVertex { vertex_id: "garden.engram.defs#keywordMatch.terms:items" }
  • AddedVertex AddedVertex { vertex_id: "garden.engram.defs#matchView" }
  • AddedVertex AddedVertex { vertex_id: "garden.engram.defs#matchView.fusion" }
  • AddedVertex AddedVertex { vertex_id: "garden.engram.defs#matchView.keyword" }
  • AddedVertex AddedVertex { vertex_id: "garden.engram.defs#matchView.snippet" }
  • AddedVertex AddedVertex { vertex_id: "garden.engram.defs#matchView.vector" }
  • AddedVertex AddedVertex { vertex_id: "garden.engram.defs#memoryView.match" }
  • AddedVertex AddedVertex { vertex_id: "garden.engram.defs#snippetView" }
  • AddedVertex AddedVertex { vertex_id: "garden.engram.defs#snippetView.field" }
  • AddedVertex AddedVertex { vertex_id: "garden.engram.defs#snippetView.highlights" }
  • AddedVertex AddedVertex { vertex_id: "garden.engram.defs#snippetView.highlights:items" }
  • AddedVertex AddedVertex { vertex_id: "garden.engram.defs#snippetView.text" }
  • AddedVertex AddedVertex { vertex_id: "garden.engram.defs#termMatch" }
  • AddedVertex AddedVertex { vertex_id: "garden.engram.defs#termMatch.field" }
  • AddedVertex AddedVertex { vertex_id: "garden.engram.defs#termMatch.kind" }
  • AddedVertex AddedVertex { vertex_id: "garden.engram.defs#termMatch.term" }
  • AddedVertex AddedVertex { vertex_id: "garden.engram.defs#vectorMatch" }
  • AddedVertex AddedVertex { vertex_id: "garden.engram.defs#vectorMatch.rank" }
  • AddedVertex AddedVertex { vertex_id: "garden.engram.defs#vectorMatch.similarity" }
  • AddedEdge AddedEdge { src: "garden.engram.defs#keywordMatch.terms", tgt: "garden.engram.defs#keywordMatch.terms:items", kind: "items", name: None }
  • AddedEdge AddedEdge { src: "garden.engram.defs#keywordMatch.terms:items", tgt: "garden.engram.defs#termMatch", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "garden.engram.defs#matchView", tgt: "garden.engram.defs#matchView.fusion", kind: "prop", name: Some("fusion") }
  • AddedEdge AddedEdge { src: "garden.engram.defs#matchView", tgt: "garden.engram.defs#matchView.keyword", kind: "prop", name: Some("keyword") }
  • AddedEdge AddedEdge { src: "garden.engram.defs#matchView", tgt: "garden.engram.defs#matchView.snippet", kind: "prop", name: Some("snippet") }
  • AddedEdge AddedEdge { src: "garden.engram.defs#matchView", tgt: "garden.engram.defs#matchView.vector", kind: "prop", name: Some("vector") }
  • AddedEdge AddedEdge { src: "garden.engram.defs#matchView.keyword", tgt: "garden.engram.defs#keywordMatch", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "garden.engram.defs#matchView.snippet", tgt: "garden.engram.defs#snippetView", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "garden.engram.defs#matchView.vector", tgt: "garden.engram.defs#vectorMatch", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "garden.engram.defs#memoryView", tgt: "garden.engram.defs#memoryView.match", kind: "prop", name: Some("match") }
  • AddedEdge AddedEdge { src: "garden.engram.defs#memoryView.match", tgt: "garden.engram.defs#matchView", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "garden.engram.defs#snippetView.highlights", tgt: "garden.engram.defs#snippetView.highlights:items", kind: "items", name: None }
  • AddedEdge AddedEdge { src: "garden.engram.defs#snippetView.highlights:items", tgt: "garden.engram.defs#byteSlice", kind: "ref", name: None }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "garden.engram.defs#byteSlice" }
  • AddedVertex { vertex_id: "garden.engram.defs#byteSlice.byteEnd" }
  • AddedVertex { vertex_id: "garden.engram.defs#byteSlice.byteStart" }
  • AddedVertex { vertex_id: "garden.engram.defs#keywordMatch" }
  • AddedVertex { vertex_id: "garden.engram.defs#keywordMatch.rank" }
  • AddedVertex { vertex_id: "garden.engram.defs#keywordMatch.score" }
  • AddedVertex { vertex_id: "garden.engram.defs#keywordMatch.terms" }
  • AddedVertex { vertex_id: "garden.engram.defs#keywordMatch.terms:items" }
  • AddedVertex { vertex_id: "garden.engram.defs#matchView" }
  • AddedVertex { vertex_id: "garden.engram.defs#matchView.fusion" }
  • AddedVertex { vertex_id: "garden.engram.defs#matchView.keyword" }
  • AddedVertex { vertex_id: "garden.engram.defs#matchView.snippet" }
  • AddedVertex { vertex_id: "garden.engram.defs#matchView.vector" }
  • AddedVertex { vertex_id: "garden.engram.defs#memoryView.match" }
  • AddedVertex { vertex_id: "garden.engram.defs#snippetView" }
  • AddedVertex { vertex_id: "garden.engram.defs#snippetView.field" }
  • AddedVertex { vertex_id: "garden.engram.defs#snippetView.highlights" }
  • AddedVertex { vertex_id: "garden.engram.defs#snippetView.highlights:items" }
  • AddedVertex { vertex_id: "garden.engram.defs#snippetView.text" }
  • AddedVertex { vertex_id: "garden.engram.defs#termMatch" }
  • AddedVertex { vertex_id: "garden.engram.defs#termMatch.field" }
  • AddedVertex { vertex_id: "garden.engram.defs#termMatch.kind" }
  • AddedVertex { vertex_id: "garden.engram.defs#termMatch.term" }
  • AddedVertex { vertex_id: "garden.engram.defs#vectorMatch" }
  • AddedVertex { vertex_id: "garden.engram.defs#vectorMatch.rank" }
  • AddedVertex { vertex_id: "garden.engram.defs#vectorMatch.similarity" }

Additional Notes

  • Breaking: RequiredEdgeAdded { vertex_id: "garden.engram.defs#vectorMatch", src: "garden.engram.defs#vectorMatch", tgt: "garden.engram.defs#vectorMatch.rank", kind: "prop", name: Some("rank") }
  • Breaking: RequiredEdgeAdded { vertex_id: "garden.engram.defs#vectorMatch", src: "garden.engram.defs#vectorMatch", tgt: "garden.engram.defs#vectorMatch.similarity", kind: "prop", name: Some("similarity") }
  • Breaking: RequiredEdgeAdded { vertex_id: "garden.engram.defs#snippetView", src: "garden.engram.defs#snippetView", tgt: "garden.engram.defs#snippetView.text", kind: "prop", name: Some("text") }
  • Breaking: RequiredEdgeAdded { vertex_id: "garden.engram.defs#snippetView", src: "garden.engram.defs#snippetView", tgt: "garden.engram.defs#snippetView.field", kind: "prop", name: Some("field") }
  • Breaking: RequiredEdgeAdded { vertex_id: "garden.engram.defs#snippetView", src: "garden.engram.defs#snippetView", tgt: "garden.engram.defs#snippetView.highlights", kind: "prop", name: Some("highlights") }
  • Breaking: RequiredEdgeAdded { vertex_id: "garden.engram.defs#keywordMatch", src: "garden.engram.defs#keywordMatch", tgt: "garden.engram.defs#keywordMatch.score", kind: "prop", name: Some("score") }
  • Breaking: RequiredEdgeAdded { vertex_id: "garden.engram.defs#keywordMatch", src: "garden.engram.defs#keywordMatch", tgt: "garden.engram.defs#keywordMatch.terms", kind: "prop", name: Some("terms") }
  • Breaking: RequiredEdgeAdded { vertex_id: "garden.engram.defs#keywordMatch", src: "garden.engram.defs#keywordMatch", tgt: "garden.engram.defs#keywordMatch.rank", kind: "prop", name: Some("rank") }
  • Breaking: RequiredEdgeAdded { vertex_id: "garden.engram.defs#termMatch", src: "garden.engram.defs#termMatch", tgt: "garden.engram.defs#termMatch.kind", kind: "prop", name: Some("kind") }
  • Breaking: RequiredEdgeAdded { vertex_id: "garden.engram.defs#termMatch", src: "garden.engram.defs#termMatch", tgt: "garden.engram.defs#termMatch.term", kind: "prop", name: Some("term") }
  • Breaking: RequiredEdgeAdded { vertex_id: "garden.engram.defs#termMatch", src: "garden.engram.defs#termMatch", tgt: "garden.engram.defs#termMatch.field", kind: "prop", name: Some("field") }
  • Breaking: RequiredEdgeAdded { vertex_id: "garden.engram.defs#byteSlice", src: "garden.engram.defs#byteSlice", tgt: "garden.engram.defs#byteSlice.byteEnd", kind: "prop", name: Some("byteEnd") }
  • Breaking: RequiredEdgeAdded { vertex_id: "garden.engram.defs#byteSlice", src: "garden.engram.defs#byteSlice", tgt: "garden.engram.defs#byteSlice.byteStart", kind: "prop", name: Some("byteStart") }
  • Non-breaking: AddedEdge { src: "garden.engram.defs#keywordMatch.terms", tgt: "garden.engram.defs#keywordMatch.terms:items", kind: "items", name: None }
  • Non-breaking: AddedEdge { src: "garden.engram.defs#keywordMatch.terms:items", tgt: "garden.engram.defs#termMatch", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "garden.engram.defs#matchView", tgt: "garden.engram.defs#matchView.fusion", kind: "prop", name: Some("fusion") }
  • Non-breaking: AddedEdge { src: "garden.engram.defs#matchView", tgt: "garden.engram.defs#matchView.keyword", kind: "prop", name: Some("keyword") }
  • Non-breaking: AddedEdge { src: "garden.engram.defs#matchView", tgt: "garden.engram.defs#matchView.snippet", kind: "prop", name: Some("snippet") }
  • Non-breaking: AddedEdge { src: "garden.engram.defs#matchView", tgt: "garden.engram.defs#matchView.vector", kind: "prop", name: Some("vector") }
  • Non-breaking: AddedEdge { src: "garden.engram.defs#matchView.keyword", tgt: "garden.engram.defs#keywordMatch", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "garden.engram.defs#matchView.snippet", tgt: "garden.engram.defs#snippetView", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "garden.engram.defs#matchView.vector", tgt: "garden.engram.defs#vectorMatch", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "garden.engram.defs#memoryView", tgt: "garden.engram.defs#memoryView.match", kind: "prop", name: Some("match") }
  • Non-breaking: AddedEdge { src: "garden.engram.defs#memoryView.match", tgt: "garden.engram.defs#matchView", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "garden.engram.defs#snippetView.highlights", tgt: "garden.engram.defs#snippetView.highlights:items", kind: "items", name: None }
  • Non-breaking: AddedEdge { src: "garden.engram.defs#snippetView.highlights:items", tgt: "garden.engram.defs#byteSlice", kind: "ref", name: None }
1 1
{
2 2
  "$type": "com.atproto.lexicon.schema",
3 3
  "defs": {
4 +
    "byteSlice": {
5 +
      "description": "A UTF-8 byte range in a snippet's text, like a rich-text facet's index.",
6 +
      "properties": {
7 +
        "byteEnd": {
8 +
          "minimum": 0,
9 +
          "type": "integer"
10 +
        },
11 +
        "byteStart": {
12 +
          "minimum": 0,
13 +
          "type": "integer"
14 +
        }
15 +
      },
16 +
      "required": [
17 +
        "byteStart",
18 +
        "byteEnd"
19 +
      ],
20 +
      "type": "object"
21 +
    },
4 22
    "embedding": {
5 23
      "description": "A vector for a memory, computed by its author from the memory's text and tags (with the space's document prefix).",
6 24
      "properties": {
7 25
        "dims": {
8 26
          "maximum": 16000,
9 27
          "minimum": 1,
10 28
          "type": "integer"
11 29
        },
12 30
        "encoding": {
13 31
          "description": "f16le: little-endian IEEE half precision, 2 bytes per dimension.",
14 32
          "knownValues": [
15 33
            "f16le"
16 34
          ],
17 35
          "type": "string"
18 36
        },
19 37
        "model": {
20 38
          "maxLength": 256,
21 39
          "type": "string"
22 40
        },
23 41
        "modelDigest": {
24 42
          "maxLength": 256,
25 43
          "type": "string"
26 44
        },
27 45
        "vector": {
28 46
          "maxLength": 32000,
29 47
          "type": "bytes"
30 48
        }
31 49
      },
32 50
      "required": [
33 51
        "model",
34 52
        "modelDigest",
35 53
        "dims",
36 54
        "encoding",
37 55
        "vector"
38 56
      ],
39 57
      "type": "object"
40 58
    },
59 +
    "keywordMatch": {
60 +
      "properties": {
61 +
        "rank": {
62 +
          "description": "The result's rank by keyword score among the results.",
63 +
          "minimum": 1,
64 +
          "type": "integer"
65 +
        },
66 +
        "score": {
67 +
          "description": "The BM25 keyword score × 100.",
68 +
          "minimum": 0,
69 +
          "type": "integer"
70 +
        },
71 +
        "terms": {
72 +
          "description": "The query terms the memory contains: per query word, its exact form if present, else its stem, else an identifier's parts.",
73 +
          "items": {
74 +
            "ref": "#termMatch",
75 +
            "type": "ref"
76 +
          },
77 +
          "type": "array"
78 +
        }
79 +
      },
80 +
      "required": [
81 +
        "rank",
82 +
        "score",
83 +
        "terms"
84 +
      ],
85 +
      "type": "object"
86 +
    },
87 +
    "matchView": {
88 +
      "description": "Why a search result matched.",
89 +
      "properties": {
90 +
        "fusion": {
91 +
          "description": "Hybrid results: how the vector and keyword scores were combined.",
92 +
          "knownValues": [
93 +
            "convex",
94 +
            "rrf"
95 +
          ],
96 +
          "type": "string"
97 +
        },
98 +
        "keyword": {
99 +
          "description": "Present when any query term occurs in the memory.",
100 +
          "ref": "#keywordMatch",
101 +
          "type": "ref"
102 +
        },
103 +
        "snippet": {
104 +
          "ref": "#snippetView",
105 +
          "type": "ref"
106 +
        },
107 +
        "vector": {
108 +
          "ref": "#vectorMatch",
109 +
          "type": "ref"
110 +
        }
111 +
      },
112 +
      "type": "object"
113 +
    },
41 114
    "memoryView": {
42 115
      "properties": {
43 116
        "author": {
44 117
          "format": "did",
45 118
          "type": "string"
46 119
        },
47 120
        "cid": {
48 121
          "format": "cid",
49 122
          "type": "string"
50 123
        },
51 124
        "createdAt": {
52 125
          "format": "datetime",
53 126
          "type": "string"
54 127
        },
55 128
        "indexedAt": {
56 129
          "format": "datetime",
57 130
          "type": "string"
58 131
        },
132 +
        "match": {
133 +
          "description": "Hybrid and keyword search results only: why the memory matched.",
134 +
          "ref": "#matchView",
135 +
          "type": "ref"
136 +
        },
59 137
        "similarity": {
60 -
          "description": "Search results only: cosine similarity to the query, scaled to 0-1000.",
138 +
          "description": "Search results only: cosine similarity to the query, scaled to 0-1000. Absent from keyword-only results.",
61 139
          "maximum": 1000,
62 140
          "minimum": 0,
63 141
          "type": "integer"
64 142
        },
65 143
        "source": {
66 144
          "type": "string"
67 145
        },
68 146
        "tags": {
69 147
          "items": {
70 148
            "type": "string"
71 149
          },
72 150
          "type": "array"
73 151
        },
74 152
        "text": {
75 153
          "type": "string"
76 154
        },
77 155
        "uri": {
78 156
          "description": "The memory's space record URI: at://{authority}/space/{spaceType}/{skey}/{author}/garden.engram.memory/{rkey}.",
79 157
          "type": "string"
80 158
        }
81 159
      },
82 160
      "required": [
83 161
        "uri",
84 162
        "cid",
85 163
        "author",
86 164
        "text",
87 165
        "tags",
88 166
        "createdAt",
89 167
        "indexedAt"
90 168
      ],
91 169
      "type": "object"
92 170
    },
93 171
    "model": {
94 172
      "description": "An embedding model, identified exactly. Vectors are comparable only when all three fields match.",
95 173
      "properties": {
96 174
        "dims": {
97 175
          "maximum": 16000,
98 176
          "minimum": 1,
99 177
          "type": "integer"
100 178
        },
101 179
        "model": {
102 180
          "description": "The model's name, such as nomic-embed-text.",
103 181
          "maxLength": 256,
104 182
          "type": "string"
105 183
        },
106 184
        "modelDigest": {
107 185
          "description": "Pins the exact model build, such as Ollama's sha256 digest of the model. A name can point to different weights over time.",
108 186
          "maxLength": 256,
109 187
          "type": "string"
110 188
        }
111 189
      },
112 190
      "required": [
113 191
        "model",
114 192
        "modelDigest",
115 193
        "dims"
116 194
      ],
117 195
      "type": "object"
196 +
    },
197 +
    "snippetView": {
198 +
      "properties": {
199 +
        "field": {
200 +
          "knownValues": [
201 +
            "text",
202 +
            "tags",
203 +
            "source"
204 +
          ],
205 +
          "type": "string"
206 +
        },
207 +
        "highlights": {
208 +
          "items": {
209 +
            "ref": "#byteSlice",
210 +
            "type": "ref"
211 +
          },
212 +
          "type": "array"
213 +
        },
214 +
        "text": {
215 +
          "description": "Up to about 200 characters of the field around the matches, with … where cut.",
216 +
          "type": "string"
217 +
        }
218 +
      },
219 +
      "required": [
220 +
        "field",
221 +
        "text",
222 +
        "highlights"
223 +
      ],
224 +
      "type": "object"
225 +
    },
226 +
    "termMatch": {
227 +
      "properties": {
228 +
        "field": {
229 +
          "knownValues": [
230 +
            "text",
231 +
            "tags",
232 +
            "source"
233 +
          ],
234 +
          "type": "string"
235 +
        },
236 +
        "kind": {
237 +
          "knownValues": [
238 +
            "exact",
239 +
            "stem",
240 +
            "part"
241 +
          ],
242 +
          "type": "string"
243 +
        },
244 +
        "term": {
245 +
          "description": "The normalized term; stems start with ~.",
246 +
          "type": "string"
247 +
        }
248 +
      },
249 +
      "required": [
250 +
        "term",
251 +
        "kind",
252 +
        "field"
253 +
      ],
254 +
      "type": "object"
255 +
    },
256 +
    "vectorMatch": {
257 +
      "properties": {
258 +
        "rank": {
259 +
          "description": "The result's rank by similarity among the results.",
260 +
          "minimum": 1,
261 +
          "type": "integer"
262 +
        },
263 +
        "similarity": {
264 +
          "description": "Cosine similarity, scaled to 0-1000.",
265 +
          "maximum": 1000,
266 +
          "minimum": 0,
267 +
          "type": "integer"
268 +
        }
269 +
      },
270 +
      "required": [
271 +
        "rank",
272 +
        "similarity"
273 +
      ],
274 +
      "type": "object"
118 275
    }
119 276
  },
120 277
  "id": "garden.engram.defs",
121 278
  "lexicon": 1
122 279
}

Compare Other Versions

Lexicon Garden

@