app.matakite.question
Schema Diff
+6 -6
Compatibility Analysis
Backward Compatible
No changes detected.
1
1
{
2
2
"$type": "com.atproto.lexicon.schema",
3
3
"defs": {
4
4
"dateParams": {
5
-
"description": "Reserved (v2). Date question parameters — 'when will X happen?'. Resolves to the datetime the event occurred.",
5
+
"description": "Date question parameters — 'when will X happen?'. Resolves to the datetime the event occurred.",
6
6
"properties": {
7
7
"max": {
8
8
"description": "Latest representable resolution datetime (UTC ISO 8601). Must be >= min.",
9
9
"format": "datetime",
10
10
"type": "string"
11
11
},
12
12
"min": {
13
13
"description": "Earliest representable resolution datetime (UTC ISO 8601).",
14
14
"format": "datetime",
15
15
"type": "string"
16
16
},
17
17
"openLower": {
18
18
"description": "If true, resolution before min is representable.",
19
19
"type": "boolean"
20
20
},
21
21
"openUpper": {
22
22
"description": "If true, resolution after max is representable.",
23
23
"type": "boolean"
24
24
}
25
25
},
26
26
"required": [
27
27
"min",
28
28
"max"
29
29
],
30
30
"type": "object"
31
31
},
32
32
"main": {
33
33
"description": "A resolvable forecasting question. Immutability contract: editing this record after forecasts exist changes its CID; forecasts reference the question by strongRef (uri+cid), so appviews detect and flag post-forecast edits.",
34
34
"key": "tid",
35
35
"record": {
36
36
"properties": {
37
37
"background": {
38
38
"description": "Optional context for forecasters. Not part of the resolution rule.",
39
39
"maxGraphemes": 3000,
40
40
"maxLength": 30000,
41
41
"type": "string"
42
42
},
43
43
"closesAt": {
44
44
"description": "Last moment forecasts count for scoring. All datetimes are UTC (ISO 8601).",
45
45
"format": "datetime",
46
46
"type": "string"
47
47
},
48
48
"createdAt": {
49
49
"format": "datetime",
50
50
"type": "string"
51
51
},
52
52
"date": {
53
-
"description": "Required iff questionType is 'date'. Reserved for v2.",
53
+
"description": "Required iff questionType is 'date'.",
54
54
"ref": "#dateParams",
55
55
"type": "ref"
56
56
},
57
57
"domain": {
58
58
"description": "Optional curated top-level subject area (author-selected). Feeds per-domain reputation and filtering. Open set: clients may encounter values they don't recognize and should tolerate them.",
59
59
"knownValues": [
60
60
"politics",
61
61
"geopolitics",
62
62
"economics",
63
63
"finance",
64
64
"crypto",
65
65
"tech",
66
66
"science",
67
67
"health",
68
68
"climate",
69
69
"sports",
70
70
"culture"
71
71
],
72
72
"type": "string"
73
73
},
74
74
"finePrint": {
75
75
"description": "Optional edge cases: source-unavailable fallbacks, rescheduling, tie-breaks, timezone specifics.",
76
76
"maxGraphemes": 3000,
77
77
"maxLength": 30000,
78
78
"type": "string"
79
79
},
80
80
"inspiredBy": {
81
81
"description": "Optional AT-URI of the post that prompted this question (the 'formalize this take' flow). Weak ref by design: the referenced post may be edited or deleted.",
82
82
"format": "at-uri",
83
83
"type": "string"
84
84
},
85
85
"multi": {
86
-
"description": "Required iff questionType is 'multi'. Reserved for v2.",
86
+
"description": "Required iff questionType is 'multi'.",
87
87
"ref": "#multiParams",
88
88
"type": "ref"
89
89
},
90
90
"numeric": {
91
-
"description": "Required iff questionType is 'numeric'. Reserved for v2.",
91
+
"description": "Required iff questionType is 'numeric'.",
92
92
"ref": "#numericParams",
93
93
"type": "ref"
94
94
},
95
95
"questionType": {
96
-
"description": "v1 appviews support 'binary' only. 'multi', 'numeric', and 'date' are reserved; records using them should be skipped, not rejected, by clients that don't understand them.",
96
+
"description": "One of 'binary', 'multi', 'numeric', or 'date'. Clients that don't understand a value should skip the record, not reject it.",
97
97
"knownValues": [
98
98
"binary",
99
99
"multi",
100
100
"numeric",
101
101
"date"
102
102
],
103
103
"type": "string"
104
104
},
105
105
"resolutionCriteria": {
106
106
"description": "The precise rule determining the outcome. Must pass the Clairvoyance Test: a reader at resolution time can determine the outcome definitively from this text plus the sources.",
107
107
"maxGraphemes": 3000,
108
108
"maxLength": 30000,
109
109
"type": "string"
110
110
},
111
111
"resolutionSources": {
112
112
"description": "Authoritative sources for resolution, in priority order. First is primary; the rest are fallbacks.",
113
113
"items": {
114
114
"ref": "#source",
115
115
"type": "ref"
116
116
},
117
117
"maxLength": 10,
118
118
"type": "array"
119
119
},
120
120
"resolver": {
121
121
"description": "DID designated to resolve this question. v1: typically the question creator. Appviews apply their own trust policy to resolutions.",
122
122
"format": "did",
123
123
"type": "string"
124
124
},
125
125
"resolvesAt": {
126
126
"description": "Expected resolution time. Must be >= closesAt. Informational; actual resolution is a separate record.",
127
127
"format": "datetime",
128
128
"type": "string"
129
129
},
130
130
"tags": {
131
131
"description": "Free-form topic tags for discovery and filtering.",
132
132
"items": {
133
133
"maxGraphemes": 64,
134
134
"maxLength": 640,
135
135
"type": "string"
136
136
},
137
137
"maxLength": 8,
138
138
"type": "array"
139
139
},
140
140
"text": {
141
141
"description": "The headline question. Convention: 'Will X happen by DATE per SOURCE?'",
142
142
"maxGraphemes": 300,
143
143
"maxLength": 3000,
144
144
"type": "string"
145
145
}
146
146
},
147
147
"required": [
148
148
"text",
149
149
"resolutionCriteria",
150
150
"questionType",
151
151
"closesAt",
152
152
"resolvesAt",
153
153
"resolver",
154
154
"createdAt"
155
155
],
156
156
"type": "object"
157
157
},
158
158
"type": "record"
159
159
},
160
160
"multiParams": {
161
161
"description": "Multiple-choice question parameters. New questions that accept forecasts include optionIds aligned one-to-one with options; appviews require the ids to be unique and stable within the cid-pinned question version.",
162
162
"properties": {
163
163
"optionIds": {
164
164
"description": "Opaque stable identifiers aligned by index with options. Required by the reference app for forecastable multi questions; optional in the Lexicon so previously published records remain valid. Labels may change in a new question version, but forecasts refer to these ids and pin the version by cid.",
165
165
"items": {
166
166
"maxGraphemes": 64,
167
167
"maxLength": 640,
168
168
"minGraphemes": 1,
169
169
"minLength": 1,
170
170
"type": "string"
171
171
},
172
172
"maxLength": 50,
173
173
"minLength": 2,
174
174
"type": "array"
175
175
},
176
176
"options": {
177
177
"items": {
178
178
"maxGraphemes": 100,
179
179
"maxLength": 1000,
180
180
"type": "string"
181
181
},
182
182
"maxLength": 50,
183
183
"minLength": 2,
184
184
"type": "array"
185
185
},
186
186
"sumToOne": {
187
187
"description": "If true, options are mutually exclusive and exactly one resolves yes (Kalshi mutually_exclusive / Polymarket negRisk semantics).",
188
188
"type": "boolean"
189
189
}
190
190
},
191
191
"required": [
192
192
"options"
193
193
],
194
194
"type": "object"
195
195
},
196
196
"numericParams": {
197
-
"description": "Reserved (v2). Numeric range question parameters.",
197
+
"description": "Numeric range question parameters.",
198
198
"properties": {
199
199
"logScale": {
200
200
"type": "boolean"
201
201
},
202
202
"max": {
203
203
"description": "Decimal string. Upper bound.",
204
204
"type": "string"
205
205
},
206
206
"min": {
207
207
"description": "Decimal string. Lower bound.",
208
208
"type": "string"
209
209
},
210
210
"openLower": {
211
211
"description": "If true, resolution below min is representable.",
212
212
"type": "boolean"
213
213
},
214
214
"openUpper": {
215
215
"description": "If true, resolution above max is representable.",
216
216
"type": "boolean"
217
217
},
218
218
"unit": {
219
219
"maxGraphemes": 32,
220
220
"maxLength": 320,
221
221
"type": "string"
222
222
}
223
223
},
224
224
"required": [
225
225
"min",
226
226
"max"
227
227
],
228
228
"type": "object"
229
229
},
230
230
"source": {
231
231
"properties": {
232
232
"name": {
233
233
"maxGraphemes": 64,
234
234
"maxLength": 640,
235
235
"type": "string"
236
236
},
237
237
"url": {
238
238
"format": "uri",
239
239
"type": "string"
240
240
}
241
241
},
242
242
"required": [
243
243
"name"
244
244
],
245
245
"type": "object"
246
246
}
247
247
},
248
248
"id": "app.matakite.question",
249
249
"lexicon": 1
250
250
}