app.matakite.question

matakite.app

Schema Diff

+6 -6

From

CID
bafyreie4twiksmh...
Indexed At
2026-07-11 20:49 UTC
View this version

To

CID
bafyreifgptl5dyz...
Indexed At
2026-07-16 15:12 UTC
View this version

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
}

Compare Other Versions

Lexicon Garden

@