dev.knotless.pull

lexicons.knotless.dev

Schema Diff

+50 -0

From

CID
bafyreih7rse7ncj...
Indexed At
2026-10-28 23:15 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, 22 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 (22)
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.defs#facet" }
  • 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.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.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.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.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.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.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.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 29
          "attachments": {
30 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 31
            "items": {
32 32
              "refs": [
33 33
                "dev.knotless.defs#image"
34 34
              ],
35 35
              "type": "union"
36 36
            },
37 37
            "maxLength": 32,
38 38
            "type": "array"
39 39
          },
40 40
          "base": {
41 41
            "description": "The branch to merge into, without refs/heads/.",
42 42
            "maxLength": 255,
43 43
            "type": "string"
44 44
          },
45 45
          "body": {
46 46
            "description": "Markdown.",
47 47
            "maxLength": 20000,
48 48
            "type": "string"
49 49
          },
50 50
          "createdAt": {
51 51
            "format": "datetime",
52 52
            "type": "string"
53 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 +
          },
54 67
          "head": {
55 68
            "ref": "#head",
56 69
            "type": "ref"
57 70
          },
58 71
          "repo": {
59 72
            "description": "The target repository.",
60 73
            "ref": "dev.knotless.defs#repoRef",
61 74
            "type": "ref"
62 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 +
          },
63 85
          "title": {
64 86
            "maxGraphemes": 300,
65 87
            "maxLength": 3000,
66 88
            "type": "string"
67 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 +
          },
68 99
          "updatedAt": {
69 100
            "description": "When its author last changed its title or body.",
70 101
            "format": "datetime",
71 102
            "type": "string"
72 103
          }
73 104
        },
74 105
        "required": [
75 106
          "repo",
76 107
          "base",
77 108
          "head",
78 109
          "title",
79 110
          "createdAt"
80 111
        ],
81 112
        "type": "object"
82 113
      },
83 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"
84 134
    }
85 135
  },
86 136
  "description": "A request to merge a branch into a repository, kept in the requester's account.",
87 137
  "id": "dev.knotless.pull",
88 138
  "lexicon": 1
89 139
}

Compare Other Versions

Lexicon Garden

@