dev.knotless.pull

lexicons.knotless.dev

Schema Diff

+61 -0

From

CID
bafyreigjrybgvmu...
Indexed At
2026-10-28 21:21 UTC
View this version

To

CID
bafyreibbuwmdkoa...
Indexed At
2026-10-29 06:15 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

1 breaking change, 30 non-breaking changes.

Breaking Changes (1)
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "dev.knotless.pull#reviewer", src: "dev.knotless.pull#reviewer", tgt: "dev.knotless.pull#reviewer.did", kind: "prop", name: Some("did") }
Non-Breaking Changes (30)
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.defs#facet" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.defs#image" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.pull#reviewer" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.pull#reviewer.did" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.pull#reviewer.requestedAt" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.pull:body.attachments" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.pull:body.attachments:items" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.pull:body.attachments:items:variant0" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.pull:body.draft" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.pull:body.facets" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.pull:body.facets:items" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.pull:body.reviewers" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.pull:body.reviewers:items" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.pull:body.titleFacets" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.pull:body.titleFacets:items" }
  • AddedEdge AddedEdge { src: "dev.knotless.pull#reviewer", tgt: "dev.knotless.pull#reviewer.requestedAt", kind: "prop", name: Some("requestedAt") }
  • AddedEdge AddedEdge { src: "dev.knotless.pull:body", tgt: "dev.knotless.pull:body.attachments", kind: "prop", name: Some("attachments") }
  • AddedEdge AddedEdge { src: "dev.knotless.pull:body", tgt: "dev.knotless.pull:body.draft", kind: "prop", name: Some("draft") }
  • AddedEdge AddedEdge { src: "dev.knotless.pull:body", tgt: "dev.knotless.pull:body.facets", kind: "prop", name: Some("facets") }
  • AddedEdge AddedEdge { src: "dev.knotless.pull:body", tgt: "dev.knotless.pull:body.reviewers", kind: "prop", name: Some("reviewers") }
  • AddedEdge AddedEdge { src: "dev.knotless.pull:body", tgt: "dev.knotless.pull:body.titleFacets", kind: "prop", name: Some("titleFacets") }
  • AddedEdge AddedEdge { src: "dev.knotless.pull:body.attachments", tgt: "dev.knotless.pull:body.attachments:items", kind: "items", name: None }
  • AddedEdge AddedEdge { src: "dev.knotless.pull:body.attachments:items", tgt: "dev.knotless.pull:body.attachments:items:variant0", kind: "variant", name: Some("dev.knotless.defs#image") }
  • AddedEdge AddedEdge { src: "dev.knotless.pull:body.attachments:items:variant0", tgt: "dev.knotless.defs#image", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "dev.knotless.pull:body.facets", tgt: "dev.knotless.pull:body.facets:items", kind: "items", name: None }
  • AddedEdge AddedEdge { src: "dev.knotless.pull:body.facets:items", tgt: "dev.knotless.defs#facet", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "dev.knotless.pull:body.reviewers", tgt: "dev.knotless.pull:body.reviewers:items", kind: "items", name: None }
  • AddedEdge AddedEdge { src: "dev.knotless.pull:body.reviewers:items", tgt: "dev.knotless.pull#reviewer", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "dev.knotless.pull:body.titleFacets", tgt: "dev.knotless.pull:body.titleFacets:items", kind: "items", name: None }
  • AddedEdge AddedEdge { src: "dev.knotless.pull:body.titleFacets:items", tgt: "dev.knotless.defs#facet", kind: "ref", name: None }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "dev.knotless.defs#facet" }
  • AddedVertex { vertex_id: "dev.knotless.defs#image" }
  • AddedVertex { vertex_id: "dev.knotless.pull#reviewer" }
  • AddedVertex { vertex_id: "dev.knotless.pull#reviewer.did" }
  • AddedVertex { vertex_id: "dev.knotless.pull#reviewer.requestedAt" }
  • AddedVertex { vertex_id: "dev.knotless.pull:body.attachments" }
  • AddedVertex { vertex_id: "dev.knotless.pull:body.attachments:items" }
  • AddedVertex { vertex_id: "dev.knotless.pull:body.attachments:items:variant0" }
  • AddedVertex { vertex_id: "dev.knotless.pull:body.draft" }
  • AddedVertex { vertex_id: "dev.knotless.pull:body.facets" }
  • AddedVertex { vertex_id: "dev.knotless.pull:body.facets:items" }
  • AddedVertex { vertex_id: "dev.knotless.pull:body.reviewers" }
  • AddedVertex { vertex_id: "dev.knotless.pull:body.reviewers:items" }
  • AddedVertex { vertex_id: "dev.knotless.pull:body.titleFacets" }
  • AddedVertex { vertex_id: "dev.knotless.pull:body.titleFacets:items" }

Additional Notes

  • Breaking: RequiredEdgeAdded { vertex_id: "dev.knotless.pull#reviewer", src: "dev.knotless.pull#reviewer", tgt: "dev.knotless.pull#reviewer.did", kind: "prop", name: Some("did") }
  • Non-breaking: AddedEdge { src: "dev.knotless.pull#reviewer", tgt: "dev.knotless.pull#reviewer.requestedAt", kind: "prop", name: Some("requestedAt") }
  • Non-breaking: AddedEdge { src: "dev.knotless.pull:body", tgt: "dev.knotless.pull:body.attachments", kind: "prop", name: Some("attachments") }
  • Non-breaking: AddedEdge { src: "dev.knotless.pull:body", tgt: "dev.knotless.pull:body.draft", kind: "prop", name: Some("draft") }
  • Non-breaking: AddedEdge { src: "dev.knotless.pull:body", tgt: "dev.knotless.pull:body.facets", kind: "prop", name: Some("facets") }
  • Non-breaking: AddedEdge { src: "dev.knotless.pull:body", tgt: "dev.knotless.pull:body.reviewers", kind: "prop", name: Some("reviewers") }
  • Non-breaking: AddedEdge { src: "dev.knotless.pull:body", tgt: "dev.knotless.pull:body.titleFacets", kind: "prop", name: Some("titleFacets") }
  • Non-breaking: AddedEdge { src: "dev.knotless.pull:body.attachments", tgt: "dev.knotless.pull:body.attachments:items", kind: "items", name: None }
  • Non-breaking: AddedEdge { src: "dev.knotless.pull:body.attachments:items", tgt: "dev.knotless.pull:body.attachments:items:variant0", kind: "variant", name: Some("dev.knotless.defs#image") }
  • Non-breaking: AddedEdge { src: "dev.knotless.pull:body.attachments:items:variant0", tgt: "dev.knotless.defs#image", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "dev.knotless.pull:body.facets", tgt: "dev.knotless.pull:body.facets:items", kind: "items", name: None }
  • Non-breaking: AddedEdge { src: "dev.knotless.pull:body.facets:items", tgt: "dev.knotless.defs#facet", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "dev.knotless.pull:body.reviewers", tgt: "dev.knotless.pull:body.reviewers:items", kind: "items", name: None }
  • Non-breaking: AddedEdge { src: "dev.knotless.pull:body.reviewers:items", tgt: "dev.knotless.pull#reviewer", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "dev.knotless.pull:body.titleFacets", tgt: "dev.knotless.pull:body.titleFacets:items", kind: "items", name: None }
  • Non-breaking: AddedEdge { src: "dev.knotless.pull:body.titleFacets:items", tgt: "dev.knotless.defs#facet", kind: "ref", name: None }
1 1
{
2 2
  "$type": "com.atproto.lexicon.schema",
3 3
  "defs": {
4 4
    "head": {
5 5
      "description": "Where the changes to merge are.",
6 6
      "properties": {
7 7
        "branch": {
8 8
          "description": "Without refs/heads/.",
9 9
          "maxLength": 255,
10 10
          "type": "string"
11 11
        },
12 12
        "repo": {
13 13
          "description": "The repository holding the branch: the target, or a fork.",
14 14
          "ref": "dev.knotless.defs#repoRef",
15 15
          "type": "ref"
16 16
        }
17 17
      },
18 18
      "required": [
19 19
        "repo",
20 20
        "branch"
21 21
      ],
22 22
      "type": "object"
23 23
    },
24 24
    "main": {
25 25
      "description": "For a private repository, written in the requester's repo inside the repository's space.",
26 26
      "key": "tid",
27 27
      "record": {
28 28
        "properties": {
29 +
          "attachments": {
30 +
            "description": "What it carries beside its body: the pictures the body shows. Kinds unknown to a reader are passed over, and kept by a client changing it.",
31 +
            "items": {
32 +
              "refs": [
33 +
                "dev.knotless.defs#image"
34 +
              ],
35 +
              "type": "union"
36 +
            },
37 +
            "maxLength": 32,
38 +
            "type": "array"
39 +
          },
29 40
          "base": {
30 41
            "description": "The branch to merge into, without refs/heads/.",
31 42
            "maxLength": 255,
32 43
            "type": "string"
33 44
          },
34 45
          "body": {
35 46
            "description": "Markdown.",
36 47
            "maxLength": 20000,
37 48
            "type": "string"
38 49
          },
39 50
          "createdAt": {
40 51
            "format": "datetime",
41 52
            "type": "string"
42 53
          },
54 +
          "draft": {
55 +
            "description": "Whether it is a draft: not ready to merge or queue. Its author clears it when it is ready. Not a draft, when absent.",
56 +
            "type": "boolean"
57 +
          },
58 +
          "facets": {
59 +
            "description": "The accounts its body mentions, by where: written as it is, from each `@handle` outside code and links.",
60 +
            "items": {
61 +
              "ref": "dev.knotless.defs#facet",
62 +
              "type": "ref"
63 +
            },
64 +
            "maxLength": 50,
65 +
            "type": "array"
66 +
          },
43 67
          "head": {
44 68
            "ref": "#head",
45 69
            "type": "ref"
46 70
          },
47 71
          "repo": {
48 72
            "description": "The target repository.",
49 73
            "ref": "dev.knotless.defs#repoRef",
50 74
            "type": "ref"
51 75
          },
76 +
          "reviewers": {
77 +
            "description": "The accounts its author asks to review it. A maintainer asking someone else would need a record of their own, which this is not.",
78 +
            "items": {
79 +
              "ref": "#reviewer",
80 +
              "type": "ref"
81 +
            },
82 +
            "maxLength": 32,
83 +
            "type": "array"
84 +
          },
52 85
          "title": {
53 86
            "maxGraphemes": 300,
54 87
            "maxLength": 3000,
55 88
            "type": "string"
56 89
          },
90 +
          "titleFacets": {
91 +
            "description": "The accounts its title mentions, by where.",
92 +
            "items": {
93 +
              "ref": "dev.knotless.defs#facet",
94 +
              "type": "ref"
95 +
            },
96 +
            "maxLength": 50,
97 +
            "type": "array"
98 +
          },
57 99
          "updatedAt": {
58 100
            "description": "When its author last changed its title or body.",
59 101
            "format": "datetime",
60 102
            "type": "string"
61 103
          }
62 104
        },
63 105
        "required": [
64 106
          "repo",
65 107
          "base",
66 108
          "head",
67 109
          "title",
68 110
          "createdAt"
69 111
        ],
70 112
        "type": "object"
71 113
      },
72 114
      "type": "record"
115 +
    },
116 +
    "reviewer": {
117 +
      "description": "An account a pull's author asks to review it.",
118 +
      "properties": {
119 +
        "did": {
120 +
          "description": "The account asked.",
121 +
          "format": "did",
122 +
          "type": "string"
123 +
        },
124 +
        "requestedAt": {
125 +
          "description": "When it was asked: when named, or when the pull was last marked ready, if that was later.",
126 +
          "format": "datetime",
127 +
          "type": "string"
128 +
        }
129 +
      },
130 +
      "required": [
131 +
        "did"
132 +
      ],
133 +
      "type": "object"
73 134
    }
74 135
  },
75 136
  "description": "A request to merge a branch into a repository, kept in the requester's account.",
76 137
  "id": "dev.knotless.pull",
77 138
  "lexicon": 1
78 139
}

Compare Other Versions

Lexicon Garden

@