dev.knotless.getMergeStatus
Schema Diff
+10 -2
Compatibility Analysis
Backward Compatible
Backward compatible. 5 non-breaking changes.
Non-Breaking Changes (5)
- AddedVertex AddedVertex { vertex_id: "dev.knotless.getMergeStatus:output.reviewsUncounted" }
- AddedVertex AddedVertex { vertex_id: "dev.knotless.getMergeStatus:output.reviewsUncounted:items" }
- AddedEdge AddedEdge { src: "dev.knotless.getMergeStatus:output", tgt: "dev.knotless.getMergeStatus:output.reviewsUncounted", kind: "prop", name: Some("reviewsUncounted") }
- AddedEdge AddedEdge { src: "dev.knotless.getMergeStatus:output.reviewsUncounted", tgt: "dev.knotless.getMergeStatus:output.reviewsUncounted:items", kind: "items", name: None }
- AddedEdge AddedEdge { src: "dev.knotless.getMergeStatus:output.reviewsUncounted:items", tgt: "dev.knotless.getMergeStatus#note", kind: "ref", name: None }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "dev.knotless.getMergeStatus:output.reviewsUncounted" }AddedVertex { vertex_id: "dev.knotless.getMergeStatus:output.reviewsUncounted:items" }
Additional Notes
- Non-breaking: AddedEdge { src: "dev.knotless.getMergeStatus:output", tgt: "dev.knotless.getMergeStatus:output.reviewsUncounted", kind: "prop", name: Some("reviewsUncounted") }
- Non-breaking: AddedEdge { src: "dev.knotless.getMergeStatus:output.reviewsUncounted", tgt: "dev.knotless.getMergeStatus:output.reviewsUncounted:items", kind: "items", name: None }
- Non-breaking: AddedEdge { src: "dev.knotless.getMergeStatus:output.reviewsUncounted:items", tgt: "dev.knotless.getMergeStatus#note", kind: "ref", name: None }
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
-
"description": "Why it cannot merge now, in the words a merge would refuse it with.",
97
+
"description": "Why it cannot merge now, in the words a merge would refuse it with; and when the account asking may not merge it, that too.",
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
+
"reviewsUncounted": {
118
+
"description": "The approvals that do not count toward its target branch's rule, and why: `@dan's approval does not count: only the owner's and collaborators' approvals count`, or one of an earlier head when only approvals of its head as it is now count.",
119
+
"items": {
120
+
"ref": "#note",
121
+
"type": "ref"
122
+
},
123
+
"type": "array"
124
+
},
117
125
"state": {
118
126
"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
127
"knownValues": [
120
128
"clean",
121
129
"conflicting",
122
130
"blocked",
123
131
"draft"
124
132
],
125
133
"type": "string"
126
134
}
127
135
},
128
136
"required": [
129
137
"state",
130
138
"checks",
131
139
"method",
132
140
"base",
133
141
"head",
134
142
"may"
135
143
],
136
144
"type": "object"
137
145
}
138
146
},
139
147
"parameters": {
140
148
"properties": {
141
149
"pull": {
142
150
"description": "The dev.knotless.pull record.",
143
151
"format": "at-uri",
144
152
"type": "string"
145
153
},
146
154
"repo": {
147
155
"description": "The repository's dev.knotless.repo record, as dev.knotless.getRepo takes it.",
148
156
"format": "at-uri",
149
157
"type": "string"
150
158
}
151
159
},
152
160
"required": [
153
161
"repo",
154
162
"pull"
155
163
],
156
164
"type": "params"
157
165
},
158
166
"type": "query"
159
167
},
160
168
"note": {
161
169
"description": "A line of text about the pull's reviews.",
162
170
"properties": {
163
171
"text": {
164
172
"description": "In plain words.",
165
173
"type": "string"
166
174
}
167
175
},
168
176
"required": [
169
177
"text"
170
178
],
171
179
"type": "object"
172
180
},
173
181
"permissions": {
174
-
"description": "What the account asking may do to the pull.",
182
+
"description": "What the account asking may do to the pull: what its part in the repository lets it do, not whether that would work now. state and reason say that: a merge refuses a blocked pull, the owner's merge too, unless the owner forces it.",
175
183
"properties": {
176
184
"base": {
177
185
"description": "Change its target branch: those who may close it.",
178
186
"type": "boolean"
179
187
},
180
188
"force": {
181
189
"description": "Merge it past its checks: the owner alone.",
182
190
"type": "boolean"
183
191
},
184
192
"head": {
185
193
"description": "Change its head branch: its author.",
186
194
"type": "boolean"
187
195
},
188
196
"merge": {
189
197
"description": "Merge it: the owner and collaborators.",
190
198
"type": "boolean"
191
199
},
192
200
"queue": {
193
201
"description": "Put it in the merge queue or take it out: those who may merge it, in a repository whose runners land a queue.",
194
202
"type": "boolean"
195
203
},
196
204
"rerun": {
197
205
"description": "Ask the runners to run its checks again: the owner, in a repository that names runners.",
198
206
"type": "boolean"
199
207
}
200
208
},
201
209
"required": [
202
210
"merge",
203
211
"force",
204
212
"queue",
205
213
"base",
206
214
"head",
207
215
"rerun"
208
216
],
209
217
"type": "object"
210
218
}
211
219
},
212
220
"description": "Whether an open pull can merge now, and what the account asking may do to it.",
213
221
"id": "dev.knotless.getMergeStatus",
214
222
"lexicon": 1
215
223
}