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