dev.knotless.getMergeStatus

lexicons.knotless.dev

Schema Diff

+3 -2

From

CID
bafyreiepc4f7s7q...
Indexed At
2026-10-29 04:59 UTC
View this version

To

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

Compatibility Analysis

Breaking Changes Detected

1 breaking change, 0 non-breaking changes.

Breaking Changes (1)
  • ConstraintTightened ConstraintTightened { vertex_id: "dev.knotless.getMergeStatus:output.state", sort: "knownValues", old_value: "[\"clean\",\"conflicting\",\"blocked\"]", new_value: "[\"clean\",\"conflicting\",\"blocked\",\"draft\"]" }

Migration Guidance

Constraint Changes

  • ConstraintTightened ConstraintTightened { vertex_id: "dev.knotless.getMergeStatus:output.state", sort: "knownValues", old_value: "[\"clean\",\"conflicting\",\"blocked\"]", new_value: "[\"clean\",\"conflicting\",\"blocked\",\"draft\"]" }
1 1
{
2 2
  "$type": "com.atproto.lexicon.schema",
3 3
  "defs": {
4 4
    "conflict": {
5 5
      "description": "A file that both sides changed so that they do not merge.",
6 6
      "properties": {
7 7
        "path": {
8 8
          "description": "From the repository's root.",
9 9
          "type": "string"
10 10
        }
11 11
      },
12 12
      "required": [
13 13
        "path"
14 14
      ],
15 15
      "type": "object"
16 16
    },
17 17
    "main": {
18 18
      "description": "Whether an open pull can merge now, decided as `knotless merge` decides it, without merging: whether its head merges with its target branch as it is now, and, in a repository that names runners, whether each workflow that runs on it passed there. And what the account asking may do to it: merge it, queue it, retarget it or run its checks again. Requires the session cookie the pages' login sets, or a service token from the caller's PDS, audience the appview's DID, for this method.",
19 19
      "errors": [
20 20
        {
21 21
          "description": "No such repository.",
22 22
          "name": "NotFound"
23 23
        },
24 24
        {
25 25
          "description": "No one asked: log in to the pages first.",
26 26
          "name": "AuthenticationRequired"
27 27
        }
28 28
      ],
29 29
      "output": {
30 30
        "encoding": "application/json",
31 31
        "schema": {
32 32
          "properties": {
33 33
            "base": {
34 34
              "description": "The commit its target branch is at, in hex.",
35 35
              "type": "string"
36 36
            },
37 37
            "checks": {
38 38
              "description": "Where its checks stand at its head merged with its base: pending for those not run there; none when the repository names no runners, so a merge waits for none, or when it conflicts.",
39 39
              "knownValues": [
40 40
                "passed",
41 41
                "failed",
42 42
                "running",
43 43
                "pending",
44 44
                "none"
45 45
              ],
46 46
              "type": "string"
47 47
            },
48 48
            "codeOwnersWarnings": {
49 49
              "description": "The lines of the target branch's CODEOWNERS file that were skipped, and why: one naming a team, say.",
50 50
              "items": {
51 51
                "ref": "#note",
52 52
                "type": "ref"
53 53
              },
54 54
              "type": "array"
55 55
            },
56 56
            "conflicts": {
57 57
              "description": "The files that conflict.",
58 58
              "items": {
59 59
                "ref": "#conflict",
60 60
                "type": "ref"
61 61
              },
62 62
              "type": "array"
63 63
            },
64 64
            "deletes": {
65 65
              "description": "Its head branch, which merging deletes unless asked to keep it.",
66 66
              "type": "string"
67 67
            },
68 68
            "head": {
69 69
              "description": "The commit its head branch is at, in hex.",
70 70
              "type": "string"
71 71
            },
72 72
            "may": {
73 73
              "ref": "#permissions",
74 74
              "type": "ref"
75 75
            },
76 76
            "method": {
77 77
              "description": "How it would merge: a fast-forward when the base has not moved since its head branched off, else a merge commit; into a branch protected as linear, one squashed commit.",
78 78
              "knownValues": [
79 79
                "fastForward",
80 80
                "merge",
81 81
                "squash"
82 82
              ],
83 83
              "type": "string"
84 84
            },
85 85
            "queueBlocked": {
86 86
              "description": "Why the merge queue would not land it yet, when this server knows: undelegated when no runner the repository names may push, so its queue lands through this server's gateway, and the owner has not delegated writes to it.",
87 87
              "knownValues": [
88 88
                "undelegated"
89 89
              ],
90 90
              "type": "string"
91 91
            },
92 92
            "queueOnly": {
93 93
              "description": "Its target branch takes pulls only through the merge queue: queue it with dev.knotless.queuePull, as dev.knotless.mergePull refuses it. Absent is false.",
94 94
              "type": "boolean"
95 95
            },
96 96
            "reason": {
97 97
              "description": "Why it cannot merge now, in the words a merge would refuse it with.",
98 98
              "type": "string"
99 99
            },
100 100
            "reviews": {
101 101
              "description": "Where its reviews stand against what its target branch's rule asks of them (dev.knotless.repo#reviews): none when the rule asks nothing of them, or when it conflicts.",
102 102
              "knownValues": [
103 103
                "passed",
104 104
                "blocked",
105 105
                "none"
106 106
              ],
107 107
              "type": "string"
108 108
            },
109 109
            "reviewsMissing": {
110 110
              "description": "What its reviews lack, each as `knotless merge --check` lists it: `reviews 1 of 2`, `owners of web/: @alice or @bob`, `changes asked by @carol`.",
111 111
              "items": {
112 112
                "ref": "#note",
113 113
                "type": "ref"
114 114
              },
115 115
              "type": "array"
116 116
            },
117 117
            "state": {
118 -
              "description": "clean when it can merge now; conflicting when its head does not merge with its base; blocked when its checks have not all passed, or it is not reviewed as its target branch's rule asks.",
118 +
              "description": "clean when it can merge now; conflicting when its head does not merge with its base; blocked when its checks have not all passed, or it is not reviewed as its target branch's rule asks; draft, whatever else holds, while its author has not marked it ready.",
119 119
              "knownValues": [
120 120
                "clean",
121 121
                "conflicting",
122 -
                "blocked"
122 +
                "blocked",
123 +
                "draft"
123 124
              ],
124 125
              "type": "string"
125 126
            }
126 127
          },
127 128
          "required": [
128 129
            "state",
129 130
            "checks",
130 131
            "method",
131 132
            "base",
132 133
            "head",
133 134
            "may"
134 135
          ],
135 136
          "type": "object"
136 137
        }
137 138
      },
138 139
      "parameters": {
139 140
        "properties": {
140 141
          "pull": {
141 142
            "description": "The dev.knotless.pull record.",
142 143
            "format": "at-uri",
143 144
            "type": "string"
144 145
          },
145 146
          "repo": {
146 147
            "description": "The repository's dev.knotless.repo record, as dev.knotless.getRepo takes it.",
147 148
            "format": "at-uri",
148 149
            "type": "string"
149 150
          }
150 151
        },
151 152
        "required": [
152 153
          "repo",
153 154
          "pull"
154 155
        ],
155 156
        "type": "params"
156 157
      },
157 158
      "type": "query"
158 159
    },
159 160
    "note": {
160 161
      "description": "A line of text about the pull's reviews.",
161 162
      "properties": {
162 163
        "text": {
163 164
          "description": "In plain words.",
164 165
          "type": "string"
165 166
        }
166 167
      },
167 168
      "required": [
168 169
        "text"
169 170
      ],
170 171
      "type": "object"
171 172
    },
172 173
    "permissions": {
173 174
      "description": "What the account asking may do to the pull.",
174 175
      "properties": {
175 176
        "base": {
176 177
          "description": "Change its target branch: those who may close it.",
177 178
          "type": "boolean"
178 179
        },
179 180
        "force": {
180 181
          "description": "Merge it past its checks: the owner alone.",
181 182
          "type": "boolean"
182 183
        },
183 184
        "head": {
184 185
          "description": "Change its head branch: its author.",
185 186
          "type": "boolean"
186 187
        },
187 188
        "merge": {
188 189
          "description": "Merge it: the owner and collaborators.",
189 190
          "type": "boolean"
190 191
        },
191 192
        "queue": {
192 193
          "description": "Put it in the merge queue or take it out: those who may merge it, in a repository whose runners land a queue.",
193 194
          "type": "boolean"
194 195
        },
195 196
        "rerun": {
196 197
          "description": "Ask the runners to run its checks again: the owner, in a repository that names runners.",
197 198
          "type": "boolean"
198 199
        }
199 200
      },
200 201
      "required": [
201 202
        "merge",
202 203
        "force",
203 204
        "queue",
204 205
        "base",
205 206
        "head",
206 207
        "rerun"
207 208
      ],
208 209
      "type": "object"
209 210
    }
210 211
  },
211 212
  "description": "Whether an open pull can merge now, and what the account asking may do to it.",
212 213
  "id": "dev.knotless.getMergeStatus",
213 214
  "lexicon": 1
214 215
}

Compare Other Versions

Lexicon Garden

@