ai.rizom.brain.post

rizom.ai

Schema Diff

+24 -19

From

CID
bafyreia43u7xr47...
Indexed At
2026-07-21 14:09 UTC
View this version

To

CID
bafyreicqkeyqtfo...
Indexed At
2026-07-21 16:11 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

11 breaking changes, 9 non-breaking changes.

Breaking Changes (11)
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "ai.rizom.brain.post#coverImage", src: "ai.rizom.brain.post#coverImage", tgt: "ai.rizom.brain.post#coverImage.blob", kind: "prop", name: Some("blob") }
  • RequiredEdgeRemoved RequiredEdgeRemoved { vertex_id: "ai.rizom.brain.post:body.coverImage", src: "ai.rizom.brain.post:body.coverImage", tgt: "ai.rizom.brain.post:body.coverImage.blob", kind: "prop", name: Some("blob") }
  • RemovedVertex RemovedVertex { vertex_id: "ai.rizom.brain.post:body.coverImage.alt" }
  • RemovedVertex RemovedVertex { vertex_id: "ai.rizom.brain.post:body.coverImage.blob" }
  • RemovedVertex RemovedVertex { vertex_id: "ai.rizom.brain.post:body.coverImage.height" }
  • RemovedVertex RemovedVertex { vertex_id: "ai.rizom.brain.post:body.coverImage.width" }
  • RemovedEdge RemovedEdge { src: "ai.rizom.brain.post:body.coverImage", tgt: "ai.rizom.brain.post:body.coverImage.alt", kind: "prop", name: Some("alt") }
  • RemovedEdge RemovedEdge { src: "ai.rizom.brain.post:body.coverImage", tgt: "ai.rizom.brain.post:body.coverImage.height", kind: "prop", name: Some("height") }
  • RemovedEdge RemovedEdge { src: "ai.rizom.brain.post:body.coverImage", tgt: "ai.rizom.brain.post:body.coverImage.width", kind: "prop", name: Some("width") }
  • KindChanged KindChanged { vertex_id: "ai.rizom.brain.post:body.coverImage", old_kind: "object", new_kind: "ref" }
  • ConstraintAdded ConstraintAdded { vertex_id: "ai.rizom.brain.post:body.coverImage", sort: "ref", value: "#coverImage" }
Non-Breaking Changes (9)
  • AddedVertex AddedVertex { vertex_id: "ai.rizom.brain.post#coverImage" }
  • AddedVertex AddedVertex { vertex_id: "ai.rizom.brain.post#coverImage.alt" }
  • AddedVertex AddedVertex { vertex_id: "ai.rizom.brain.post#coverImage.blob" }
  • AddedVertex AddedVertex { vertex_id: "ai.rizom.brain.post#coverImage.height" }
  • AddedVertex AddedVertex { vertex_id: "ai.rizom.brain.post#coverImage.width" }
  • AddedEdge AddedEdge { src: "ai.rizom.brain.post#coverImage", tgt: "ai.rizom.brain.post#coverImage.alt", kind: "prop", name: Some("alt") }
  • AddedEdge AddedEdge { src: "ai.rizom.brain.post#coverImage", tgt: "ai.rizom.brain.post#coverImage.height", kind: "prop", name: Some("height") }
  • AddedEdge AddedEdge { src: "ai.rizom.brain.post#coverImage", tgt: "ai.rizom.brain.post#coverImage.width", kind: "prop", name: Some("width") }
  • AddedEdge AddedEdge { src: "ai.rizom.brain.post:body.coverImage", tgt: "ai.rizom.brain.post#coverImage", kind: "ref", name: None }

Migration Guidance

Removed Elements

  • RemovedVertex { vertex_id: "ai.rizom.brain.post:body.coverImage.alt" }
  • RemovedVertex { vertex_id: "ai.rizom.brain.post:body.coverImage.blob" }
  • RemovedVertex { vertex_id: "ai.rizom.brain.post:body.coverImage.height" }
  • RemovedVertex { vertex_id: "ai.rizom.brain.post:body.coverImage.width" }

Added Elements

  • AddedVertex { vertex_id: "ai.rizom.brain.post#coverImage" }
  • AddedVertex { vertex_id: "ai.rizom.brain.post#coverImage.alt" }
  • AddedVertex { vertex_id: "ai.rizom.brain.post#coverImage.blob" }
  • AddedVertex { vertex_id: "ai.rizom.brain.post#coverImage.height" }
  • AddedVertex { vertex_id: "ai.rizom.brain.post#coverImage.width" }

Constraint Changes

  • ConstraintAdded ConstraintAdded { vertex_id: "ai.rizom.brain.post:body.coverImage", sort: "ref", value: "#coverImage" }

Additional Notes

  • Breaking: RequiredEdgeAdded { vertex_id: "ai.rizom.brain.post#coverImage", src: "ai.rizom.brain.post#coverImage", tgt: "ai.rizom.brain.post#coverImage.blob", kind: "prop", name: Some("blob") }
  • Breaking: RequiredEdgeRemoved { vertex_id: "ai.rizom.brain.post:body.coverImage", src: "ai.rizom.brain.post:body.coverImage", tgt: "ai.rizom.brain.post:body.coverImage.blob", kind: "prop", name: Some("blob") }
  • Breaking: RemovedEdge { src: "ai.rizom.brain.post:body.coverImage", tgt: "ai.rizom.brain.post:body.coverImage.alt", kind: "prop", name: Some("alt") }
  • Breaking: RemovedEdge { src: "ai.rizom.brain.post:body.coverImage", tgt: "ai.rizom.brain.post:body.coverImage.height", kind: "prop", name: Some("height") }
  • Breaking: RemovedEdge { src: "ai.rizom.brain.post:body.coverImage", tgt: "ai.rizom.brain.post:body.coverImage.width", kind: "prop", name: Some("width") }
  • Breaking: KindChanged { vertex_id: "ai.rizom.brain.post:body.coverImage", old_kind: "object", new_kind: "ref" }
  • Non-breaking: AddedEdge { src: "ai.rizom.brain.post#coverImage", tgt: "ai.rizom.brain.post#coverImage.alt", kind: "prop", name: Some("alt") }
  • Non-breaking: AddedEdge { src: "ai.rizom.brain.post#coverImage", tgt: "ai.rizom.brain.post#coverImage.height", kind: "prop", name: Some("height") }
  • Non-breaking: AddedEdge { src: "ai.rizom.brain.post#coverImage", tgt: "ai.rizom.brain.post#coverImage.width", kind: "prop", name: Some("width") }
  • Non-breaking: AddedEdge { src: "ai.rizom.brain.post:body.coverImage", tgt: "ai.rizom.brain.post#coverImage", kind: "ref", name: None }
1 1
{
2 2
  "id": "ai.rizom.brain.post",
3 3
  "defs": {
4 4
    "main": {
5 5
      "key": "any",
6 6
      "type": "record",
7 7
      "record": {
8 8
        "type": "object",
9 9
        "required": [
10 10
          "title",
11 11
          "body",
12 12
          "createdAt"
13 13
        ],
14 14
        "properties": {
15 15
          "body": {
16 16
            "type": "string",
17 17
            "maxLength": 100000
18 18
          },
19 19
          "title": {
20 20
            "type": "string",
21 21
            "maxLength": 300
22 22
          },
23 23
          "format": {
24 24
            "type": "string",
25 25
            "knownValues": [
26 26
              "text/markdown"
27 27
            ]
28 28
          },
29 29
          "series": {
30 30
            "type": "string",
31 31
            "maxLength": 200
32 32
          },
33 33
          "topics": {
34 34
            "type": "array",
35 35
            "items": {
36 36
              "type": "string"
37 37
            },
38 38
            "maxLength": 50
39 39
          },
40 40
          "summary": {
41 41
            "type": "string",
42 42
            "maxLength": 2000
43 43
          },
44 44
          "brainDid": {
45 45
            "type": "string"
46 46
          },
47 47
          "anchorDid": {
48 48
            "type": "string"
49 49
          },
50 50
          "createdAt": {
51 51
            "type": "string",
52 52
            "format": "datetime"
53 53
          },
54 54
          "coverImage": {
55 -
            "type": "object",
56 -
            "required": [
57 -
              "blob"
58 -
            ],
59 -
            "properties": {
60 -
              "alt": {
61 -
                "type": "string",
62 -
                "maxLength": 1000
63 -
              },
64 -
              "blob": {
65 -
                "type": "blob"
66 -
              },
67 -
              "width": {
68 -
                "type": "integer"
69 -
              },
70 -
              "height": {
71 -
                "type": "integer"
72 -
              }
73 -
            }
55 +
            "ref": "#coverImage",
56 +
            "type": "ref"
74 57
          },
75 58
          "publishedAt": {
76 59
            "type": "string",
77 60
            "format": "datetime"
78 61
          },
79 62
          "seriesIndex": {
80 63
            "type": "integer"
81 64
          },
82 65
          "canonicalUrl": {
83 66
            "type": "string",
84 67
            "format": "uri"
85 68
          },
86 69
          "sourceEntityId": {
87 70
            "type": "string"
88 71
          },
89 72
          "sourceEntityType": {
90 73
            "type": "string",
91 74
            "knownValues": [
92 75
              "post"
93 76
            ]
94 77
          }
95 78
        }
96 79
      },
97 80
      "description": "Markdown blog post distributed by a Rizom brain."
81 +
    },
82 +
    "coverImage": {
83 +
      "type": "object",
84 +
      "required": [
85 +
        "blob"
86 +
      ],
87 +
      "properties": {
88 +
        "alt": {
89 +
          "type": "string",
90 +
          "maxLength": 1000
91 +
        },
92 +
        "blob": {
93 +
          "type": "blob"
94 +
        },
95 +
        "width": {
96 +
          "type": "integer"
97 +
        },
98 +
        "height": {
99 +
          "type": "integer"
100 +
        }
101 +
      },
102 +
      "description": "Cover image attached to the post."
98 103
    }
99 104
  },
100 105
  "$type": "com.atproto.lexicon.schema",
101 106
  "lexicon": 1
102 107
}

Compare Other Versions

Lexicon Garden

@