games.cavu.tier-madness.defs

chris.pardy.family

Schema Diff

+76 -1

From

CID
bafyreigvkqkhqrz...
Indexed At
2026-10-02 18:09 UTC
View this version

To

CID
bafyreihmueqql4f...
Indexed At
2026-10-05 15:12 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

8 breaking changes, 21 non-breaking changes.

Breaking Changes (8)
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "games.cavu.tier-madness.defs#award", src: "games.cavu.tier-madness.defs#award", tgt: "games.cavu.tier-madness.defs#award.blurb", kind: "prop", name: Some("blurb") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "games.cavu.tier-madness.defs#award", src: "games.cavu.tier-madness.defs#award", tgt: "games.cavu.tier-madness.defs#award.id", kind: "prop", name: Some("id") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "games.cavu.tier-madness.defs#award", src: "games.cavu.tier-madness.defs#award", tgt: "games.cavu.tier-madness.defs#award.points", kind: "prop", name: Some("points") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "games.cavu.tier-madness.defs#award", src: "games.cavu.tier-madness.defs#award", tgt: "games.cavu.tier-madness.defs#award.title", kind: "prop", name: Some("title") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "games.cavu.tier-madness.defs#award", src: "games.cavu.tier-madness.defs#award", tgt: "games.cavu.tier-madness.defs#award.winners", kind: "prop", name: Some("winners") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "games.cavu.tier-madness.defs#rematch", src: "games.cavu.tier-madness.defs#rematch", tgt: "games.cavu.tier-madness.defs#rematch.code", kind: "prop", name: Some("code") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "games.cavu.tier-madness.defs#rematch", src: "games.cavu.tier-madness.defs#rematch", tgt: "games.cavu.tier-madness.defs#rematch.host", kind: "prop", name: Some("host") }
  • ConstraintTightened ConstraintTightened { vertex_id: "games.cavu.tier-madness.defs#phase", sort: "knownValues", old_value: "[\"lobby\",\"vote\",\"pickCriteria\",\"deal\",\"swap\",\"double\",\"waiting\",\"reveal\",\"final\",\"scores\",\"gameover\"]", new_value: "[\"lobby\",\"vote\",\"pickCriteria\",\"deal\",\"swap\",\"double\",\"waiting\",\"reveal\",\"final\",\"scores\",\"bonus\",\"gameover\"]" }
Non-Breaking Changes (21)
  • AddedVertex AddedVertex { vertex_id: "games.cavu.tier-madness.defs#award" }
  • AddedVertex AddedVertex { vertex_id: "games.cavu.tier-madness.defs#award.blurb" }
  • AddedVertex AddedVertex { vertex_id: "games.cavu.tier-madness.defs#award.id" }
  • AddedVertex AddedVertex { vertex_id: "games.cavu.tier-madness.defs#award.points" }
  • AddedVertex AddedVertex { vertex_id: "games.cavu.tier-madness.defs#award.title" }
  • AddedVertex AddedVertex { vertex_id: "games.cavu.tier-madness.defs#award.winners" }
  • AddedVertex AddedVertex { vertex_id: "games.cavu.tier-madness.defs#award.winners:items" }
  • AddedVertex AddedVertex { vertex_id: "games.cavu.tier-madness.defs#gameView.awards" }
  • AddedVertex AddedVertex { vertex_id: "games.cavu.tier-madness.defs#gameView.awards:items" }
  • AddedVertex AddedVertex { vertex_id: "games.cavu.tier-madness.defs#gameView.rematch" }
  • AddedVertex AddedVertex { vertex_id: "games.cavu.tier-madness.defs#player.bot" }
  • AddedVertex AddedVertex { vertex_id: "games.cavu.tier-madness.defs#rematch" }
  • AddedVertex AddedVertex { vertex_id: "games.cavu.tier-madness.defs#rematch.code" }
  • AddedVertex AddedVertex { vertex_id: "games.cavu.tier-madness.defs#rematch.host" }
  • AddedEdge AddedEdge { src: "games.cavu.tier-madness.defs#award.winners", tgt: "games.cavu.tier-madness.defs#award.winners:items", kind: "items", name: None }
  • AddedEdge AddedEdge { src: "games.cavu.tier-madness.defs#gameView", tgt: "games.cavu.tier-madness.defs#gameView.awards", kind: "prop", name: Some("awards") }
  • AddedEdge AddedEdge { src: "games.cavu.tier-madness.defs#gameView", tgt: "games.cavu.tier-madness.defs#gameView.rematch", kind: "prop", name: Some("rematch") }
  • AddedEdge AddedEdge { src: "games.cavu.tier-madness.defs#gameView.awards", tgt: "games.cavu.tier-madness.defs#gameView.awards:items", kind: "items", name: None }
  • AddedEdge AddedEdge { src: "games.cavu.tier-madness.defs#gameView.awards:items", tgt: "games.cavu.tier-madness.defs#award", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "games.cavu.tier-madness.defs#gameView.rematch", tgt: "games.cavu.tier-madness.defs#rematch", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "games.cavu.tier-madness.defs#player", tgt: "games.cavu.tier-madness.defs#player.bot", kind: "prop", name: Some("bot") }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "games.cavu.tier-madness.defs#award" }
  • AddedVertex { vertex_id: "games.cavu.tier-madness.defs#award.blurb" }
  • AddedVertex { vertex_id: "games.cavu.tier-madness.defs#award.id" }
  • AddedVertex { vertex_id: "games.cavu.tier-madness.defs#award.points" }
  • AddedVertex { vertex_id: "games.cavu.tier-madness.defs#award.title" }
  • AddedVertex { vertex_id: "games.cavu.tier-madness.defs#award.winners" }
  • AddedVertex { vertex_id: "games.cavu.tier-madness.defs#award.winners:items" }
  • AddedVertex { vertex_id: "games.cavu.tier-madness.defs#gameView.awards" }
  • AddedVertex { vertex_id: "games.cavu.tier-madness.defs#gameView.awards:items" }
  • AddedVertex { vertex_id: "games.cavu.tier-madness.defs#gameView.rematch" }
  • AddedVertex { vertex_id: "games.cavu.tier-madness.defs#player.bot" }
  • AddedVertex { vertex_id: "games.cavu.tier-madness.defs#rematch" }
  • AddedVertex { vertex_id: "games.cavu.tier-madness.defs#rematch.code" }
  • AddedVertex { vertex_id: "games.cavu.tier-madness.defs#rematch.host" }

Constraint Changes

  • ConstraintTightened ConstraintTightened { vertex_id: "games.cavu.tier-madness.defs#phase", sort: "knownValues", old_value: "[\"lobby\",\"vote\",\"pickCriteria\",\"deal\",\"swap\",\"double\",\"waiting\",\"reveal\",\"final\",\"scores\",\"gameover\"]", new_value: "[\"lobby\",\"vote\",\"pickCriteria\",\"deal\",\"swap\",\"double\",\"waiting\",\"reveal\",\"final\",\"scores\",\"bonus\",\"gameover\"]" }

Additional Notes

  • Breaking: RequiredEdgeAdded { vertex_id: "games.cavu.tier-madness.defs#rematch", src: "games.cavu.tier-madness.defs#rematch", tgt: "games.cavu.tier-madness.defs#rematch.code", kind: "prop", name: Some("code") }
  • Breaking: RequiredEdgeAdded { vertex_id: "games.cavu.tier-madness.defs#rematch", src: "games.cavu.tier-madness.defs#rematch", tgt: "games.cavu.tier-madness.defs#rematch.host", kind: "prop", name: Some("host") }
  • Breaking: RequiredEdgeAdded { vertex_id: "games.cavu.tier-madness.defs#award", src: "games.cavu.tier-madness.defs#award", tgt: "games.cavu.tier-madness.defs#award.blurb", kind: "prop", name: Some("blurb") }
  • Breaking: RequiredEdgeAdded { vertex_id: "games.cavu.tier-madness.defs#award", src: "games.cavu.tier-madness.defs#award", tgt: "games.cavu.tier-madness.defs#award.id", kind: "prop", name: Some("id") }
  • Breaking: RequiredEdgeAdded { vertex_id: "games.cavu.tier-madness.defs#award", src: "games.cavu.tier-madness.defs#award", tgt: "games.cavu.tier-madness.defs#award.points", kind: "prop", name: Some("points") }
  • Breaking: RequiredEdgeAdded { vertex_id: "games.cavu.tier-madness.defs#award", src: "games.cavu.tier-madness.defs#award", tgt: "games.cavu.tier-madness.defs#award.title", kind: "prop", name: Some("title") }
  • Breaking: RequiredEdgeAdded { vertex_id: "games.cavu.tier-madness.defs#award", src: "games.cavu.tier-madness.defs#award", tgt: "games.cavu.tier-madness.defs#award.winners", kind: "prop", name: Some("winners") }
  • Non-breaking: AddedEdge { src: "games.cavu.tier-madness.defs#award.winners", tgt: "games.cavu.tier-madness.defs#award.winners:items", kind: "items", name: None }
  • Non-breaking: AddedEdge { src: "games.cavu.tier-madness.defs#gameView", tgt: "games.cavu.tier-madness.defs#gameView.awards", kind: "prop", name: Some("awards") }
  • Non-breaking: AddedEdge { src: "games.cavu.tier-madness.defs#gameView", tgt: "games.cavu.tier-madness.defs#gameView.rematch", kind: "prop", name: Some("rematch") }
  • Non-breaking: AddedEdge { src: "games.cavu.tier-madness.defs#gameView.awards", tgt: "games.cavu.tier-madness.defs#gameView.awards:items", kind: "items", name: None }
  • Non-breaking: AddedEdge { src: "games.cavu.tier-madness.defs#gameView.awards:items", tgt: "games.cavu.tier-madness.defs#award", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "games.cavu.tier-madness.defs#gameView.rematch", tgt: "games.cavu.tier-madness.defs#rematch", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "games.cavu.tier-madness.defs#player", tgt: "games.cavu.tier-madness.defs#player.bot", kind: "prop", name: Some("bot") }
1 1
{
2 2
  "$type": "com.atproto.lexicon.schema",
3 3
  "defs": {
4 +
    "award": {
5 +
      "description": "An end-of-game superlative and the bonus points it paid.",
6 +
      "properties": {
7 +
        "blurb": {
8 +
          "maxLength": 300,
9 +
          "type": "string"
10 +
        },
11 +
        "id": {
12 +
          "maxLength": 64,
13 +
          "type": "string"
14 +
        },
15 +
        "points": {
16 +
          "description": "Points to each winner.",
17 +
          "minimum": 0,
18 +
          "type": "integer"
19 +
        },
20 +
        "title": {
21 +
          "maxLength": 100,
22 +
          "type": "string"
23 +
        },
24 +
        "winners": {
25 +
          "description": "Everyone tied for it.",
26 +
          "items": {
27 +
            "format": "did",
28 +
            "type": "string"
29 +
          },
30 +
          "type": "array"
31 +
        }
32 +
      },
33 +
      "required": [
34 +
        "id",
35 +
        "title",
36 +
        "blurb",
37 +
        "winners",
38 +
        "points"
39 +
      ],
40 +
      "type": "object"
41 +
    },
4 42
    "cardPoints": {
5 43
      "description": "Points one card scored for the viewer against the other players.",
6 44
      "properties": {
7 45
        "item": {
8 46
          "maxLength": 300,
9 47
          "type": "string"
10 48
        },
11 49
        "points": {
12 50
          "type": "integer"
13 51
        }
14 52
      },
15 53
      "required": [
16 54
        "item",
17 55
        "points"
18 56
      ],
19 57
      "type": "object"
20 58
    },
21 59
    "cardResult": {
22 60
      "description": "How one card scored for the viewer.",
23 61
      "properties": {
24 62
        "doubled": {
25 63
          "type": "boolean"
26 64
        },
27 65
        "fromPlayers": {
28 66
          "description": "The part of `points` scored against the other players, already counted during the reveal.",
29 67
          "type": "integer"
30 68
        },
31 69
        "group": {
32 70
          "ref": "#tier",
33 71
          "type": "ref"
34 72
        },
35 73
        "item": {
36 74
          "maxLength": 300,
37 75
          "type": "string"
38 76
        },
39 77
        "points": {
40 78
          "type": "integer"
41 79
        },
42 80
        "yours": {
43 81
          "ref": "#tier",
44 82
          "type": "ref"
45 83
        }
46 84
      },
47 85
      "required": [
48 86
        "item",
49 87
        "yours",
50 88
        "group",
51 89
        "points",
52 90
        "fromPlayers"
53 91
      ],
54 92
      "type": "object"
55 93
    },
56 94
    "gamePlayer": {
57 95
      "properties": {
58 96
        "did": {
59 97
          "format": "did",
60 98
          "type": "string"
61 99
        },
62 100
        "initials": {
63 101
          "maxLength": 3,
64 102
          "minLength": 3,
65 103
          "type": "string"
66 104
        }
67 105
      },
68 106
      "required": [
69 107
        "did",
70 108
        "initials"
71 109
      ],
72 110
      "type": "object"
73 111
    },
74 112
    "gameView": {
75 113
      "description": "The game as one viewer may see it. Secrets (other players' moves, items not yet dealt to this viewer) are left out until revealed.",
76 114
      "properties": {
115 +
        "awards": {
116 +
          "description": "The end-of-game superlatives (bonus phase on): who won each, and the points it paid them.",
117 +
          "items": {
118 +
            "ref": "#award",
119 +
            "type": "ref"
120 +
          },
121 +
          "type": "array"
122 +
        },
77 123
        "ballot": {
78 124
          "description": "Categories to vote on (vote phase).",
79 125
          "items": {
80 126
            "maxLength": 300,
81 127
            "type": "string"
82 128
          },
83 129
          "type": "array"
84 130
        },
85 131
        "category": {
86 132
          "maxLength": 300,
87 133
          "type": "string"
88 134
        },
89 135
        "code": {
90 136
          "description": "The join code, for players and spectators (who already know it).",
91 137
          "maxLength": 4,
92 138
          "minLength": 4,
93 139
          "type": "string"
94 140
        },
95 141
        "criteria": {
96 142
          "maxLength": 300,
97 143
          "type": "string"
98 144
        },
99 145
        "criteriaOptions": {
100 146
          "items": {
101 147
            "maxLength": 300,
102 148
            "type": "string"
103 149
          },
104 150
          "type": "array"
105 151
        },
106 152
        "criteriaPicker": {
107 153
          "format": "did",
108 154
          "type": "string"
109 155
        },
110 156
        "deadline": {
111 157
          "description": "When the server stops waiting on stalled players (ms since epoch), if it's counting down.",
112 158
          "type": "integer"
113 159
        },
114 160
        "game": {
115 161
          "maxLength": 64,
116 162
          "type": "string"
117 163
        },
118 164
        "group": {
119 165
          "description": "The group's median list (final phase).",
120 166
          "items": {
121 167
            "ref": "#placement",
122 168
            "type": "ref"
123 169
          },
124 170
          "type": "array"
125 171
        },
126 172
        "hand": {
127 173
          "description": "Cards this viewer may see: during the deal, a player's cards so far (the next is dealt once the previous placement is committed); from the reveal on, the whole round, for everyone.",
128 174
          "items": {
129 175
            "ref": "#item",
130 176
            "type": "ref"
131 177
          },
132 178
          "type": "array"
133 179
        },
134 180
        "host": {
135 181
          "format": "did",
136 182
          "type": "string"
137 183
        },
138 184
        "joinable": {
139 185
          "description": "Whether the lobby still takes players.",
140 186
          "type": "boolean"
141 187
        },
142 188
        "mine": {
143 189
          "ref": "#mine",
144 190
          "type": "ref"
145 191
        },
146 192
        "phase": {
147 193
          "ref": "#phase",
148 194
          "type": "ref"
149 195
        },
150 196
        "players": {
151 197
          "items": {
152 198
            "ref": "#player",
153 199
            "type": "ref"
154 200
          },
155 201
          "type": "array"
156 202
        },
203 +
        "rematch": {
204 +
          "description": "Game over: the rematch someone started, while it still takes players.",
205 +
          "ref": "#rematch",
206 +
          "type": "ref"
207 +
        },
157 208
        "results": {
158 209
          "description": "After the reveal: how each of the viewer's cards scored.",
159 210
          "items": {
160 211
            "ref": "#cardResult",
161 212
            "type": "ref"
162 213
          },
163 214
          "type": "array"
164 215
        },
165 216
        "reveal": {
166 217
          "ref": "#reveal",
167 218
          "type": "ref"
168 219
        },
169 220
        "revealIndex": {
170 221
          "description": "Reveal phase: which card (in deal order) is being revealed.",
171 222
          "minimum": 0,
172 223
          "type": "integer"
173 224
        },
174 225
        "revealPoints": {
175 226
          "description": "Reveal phase: the viewer's points against the other players, for each card revealed so far.",
176 227
          "items": {
177 228
            "ref": "#cardPoints",
178 229
            "type": "ref"
179 230
          },
180 231
          "type": "array"
181 232
        },
182 233
        "reveals": {
183 234
          "description": "Spectators, once a round is revealed: every item's picks at once, so a spectator screen can play the reveal on timers instead of following the host.",
184 235
          "items": {
185 236
            "ref": "#reveal",
186 237
            "type": "ref"
187 238
          },
188 239
          "type": "array"
189 240
        },
190 241
        "round": {
191 242
          "minimum": 0,
192 243
          "type": "integer"
193 244
        },
194 245
        "totalRounds": {
195 246
          "minimum": 1,
196 247
          "type": "integer"
197 248
        },
198 249
        "viewer": {
199 250
          "ref": "#viewer",
200 251
          "type": "ref"
201 252
        }
202 253
      },
203 254
      "required": [
204 255
        "game",
205 256
        "phase",
206 257
        "round",
207 258
        "totalRounds",
208 259
        "players",
209 260
        "viewer"
210 261
      ],
211 262
      "type": "object"
212 263
    },
213 264
    "item": {
214 265
      "description": "A card, sourced from a Wikipedia article.",
215 266
      "properties": {
216 267
        "extract": {
217 268
          "maxLength": 10000,
218 269
          "type": "string"
219 270
        },
220 271
        "id": {
221 272
          "maxLength": 300,
222 273
          "type": "string"
223 274
        },
224 275
        "imageUrl": {
225 276
          "format": "uri",
226 277
          "type": "string"
227 278
        },
228 279
        "name": {
229 280
          "maxLength": 300,
230 281
          "type": "string"
231 282
        },
232 283
        "sourceUrl": {
233 284
          "format": "uri",
234 285
          "type": "string"
235 286
        },
236 287
        "summary": {
237 288
          "maxLength": 1000,
238 289
          "type": "string"
239 290
        }
240 291
      },
241 292
      "required": [
242 293
        "id",
243 294
        "name",
244 295
        "summary"
245 296
      ],
246 297
      "type": "object"
247 298
    },
248 299
    "mine": {
249 300
      "description": "The viewer's own round so far (only ever sent to that player).",
250 301
      "properties": {
251 302
        "double": {
252 303
          "maxLength": 300,
253 304
          "type": "string"
254 305
        },
255 306
        "doubleChosen": {
256 307
          "type": "boolean"
257 308
        },
258 309
        "placements": {
259 310
          "description": "As placed, before any swap.",
260 311
          "items": {
261 312
            "ref": "#placement",
262 313
            "type": "ref"
263 314
          },
264 315
          "type": "array"
265 316
        },
266 317
        "swap": {
267 318
          "description": "The swap, once chosen ([] = skipped).",
268 319
          "items": {
269 320
            "maxLength": 300,
270 321
            "type": "string"
271 322
          },
272 323
          "maxLength": 2,
273 324
          "type": "array"
274 325
        },
275 326
        "swapChosen": {
276 327
          "type": "boolean"
277 328
        }
278 329
      },
279 330
      "required": [
280 331
        "placements"
281 332
      ],
282 333
      "type": "object"
283 334
    },
284 335
    "phase": {
285 336
      "knownValues": [
286 337
        "lobby",
287 338
        "vote",
288 339
        "pickCriteria",
289 340
        "deal",
290 341
        "swap",
291 342
        "double",
292 343
        "waiting",
293 344
        "reveal",
294 345
        "final",
295 346
        "scores",
347 +
        "bonus",
296 348
        "gameover"
297 349
      ],
298 350
      "type": "string"
299 351
    },
300 352
    "placement": {
301 353
      "properties": {
302 354
        "item": {
303 355
          "maxLength": 300,
304 356
          "type": "string"
305 357
        },
306 358
        "tier": {
307 359
          "ref": "#tier",
308 360
          "type": "ref"
309 361
        }
310 362
      },
311 363
      "required": [
312 364
        "item",
313 365
        "tier"
314 366
      ],
315 367
      "type": "object"
316 368
    },
317 369
    "player": {
318 370
      "properties": {
371 +
        "bot": {
372 +
          "description": "Played by the server (a Jev bot), not a person.",
373 +
          "type": "boolean"
374 +
        },
319 375
        "connected": {
320 376
          "type": "boolean"
321 377
        },
322 378
        "did": {
323 379
          "format": "did",
324 380
          "type": "string"
325 381
        },
326 382
        "forfeit": {
327 383
          "description": "This round's moves didn't verify, so they don't count.",
328 384
          "type": "boolean"
329 385
        },
330 386
        "host": {
331 387
          "type": "boolean"
332 388
        },
333 389
        "initials": {
334 390
          "maxLength": 3,
335 391
          "type": "string"
336 392
        },
337 393
        "progress": {
338 394
          "description": "Moves committed this phase, for 'waiting on…' indicators.",
339 395
          "minimum": 0,
340 396
          "type": "integer"
341 397
        },
342 398
        "roundPoints": {
343 399
          "description": "Points from the last scored round (may be negative).",
344 400
          "type": "integer"
345 401
        },
346 402
        "score": {
347 403
          "minimum": 0,
348 404
          "type": "integer"
349 405
        },
350 406
        "scoreAfter": {
351 -
          "description": "While a round is being revealed: this player's total once it's banked, so a spectator screen can play the round out on its own clock.",
407 +
          "description": "While a round or the end-of-game bonus is being revealed: this player's total once it's banked, so a spectator screen can play it out on its own clock.",
352 408
          "type": "integer"
353 409
        }
354 410
      },
355 411
      "required": [
356 412
        "did",
357 413
        "initials",
358 414
        "score",
359 415
        "progress"
360 416
      ],
361 417
      "type": "object"
362 418
    },
363 419
    "prompt": {
364 420
      "description": "What a rating answers, embedded rather than written as a garden.lexicon.dazzling-boarfish.rating.prompt record. Its scale is the game's.",
365 421
      "properties": {
366 422
        "langs": {
367 423
          "items": {
368 424
            "format": "language",
369 425
            "type": "string"
370 426
          },
371 427
          "maxLength": 3,
372 428
          "type": "array"
373 429
        },
374 430
        "text": {
375 431
          "maxLength": 1024,
376 432
          "type": "string"
377 433
        }
378 434
      },
379 435
      "required": [
380 436
        "text"
381 437
      ],
382 438
      "type": "object"
383 439
    },
440 +
    "rematch": {
441 +
      "description": "A rematch lobby for the same table.",
442 +
      "properties": {
443 +
        "code": {
444 +
          "maxLength": 4,
445 +
          "minLength": 4,
446 +
          "type": "string"
447 +
        },
448 +
        "host": {
449 +
          "format": "did",
450 +
          "type": "string"
451 +
        }
452 +
      },
453 +
      "required": [
454 +
        "code",
455 +
        "host"
456 +
      ],
457 +
      "type": "object"
458 +
    },
384 459
    "reveal": {
385 460
      "properties": {
386 461
        "item": {
387 462
          "ref": "#item",
388 463
          "type": "ref"
389 464
        },
390 465
        "votes": {
391 466
          "items": {
392 467
            "ref": "#vote",
393 468
            "type": "ref"
394 469
          },
395 470
          "type": "array"
396 471
        }
397 472
      },
398 473
      "required": [
399 474
        "item",
400 475
        "votes"
401 476
      ],
402 477
      "type": "object"
403 478
    },
404 479
    "scale": {
405 480
      "description": "A rating scale, embedded rather than written as a garden.lexicon.dazzling-boarfish.rating.scale record: the same fields, minus record bookkeeping.",
406 481
      "properties": {
407 482
        "code": {
408 483
          "refs": [
409 484
            "garden.lexicon.dazzling-boarfish.rating.scale#nominal",
410 485
            "garden.lexicon.dazzling-boarfish.rating.scale#ordinal",
411 486
            "garden.lexicon.dazzling-boarfish.rating.scale#interval",
412 487
            "garden.lexicon.dazzling-boarfish.rating.scale#ratio"
413 488
          ],
414 489
          "type": "union"
415 490
        },
416 491
        "description": {
417 492
          "maxLength": 1024,
418 493
          "type": "string"
419 494
        },
420 495
        "langs": {
421 496
          "items": {
422 497
            "format": "language",
423 498
            "type": "string"
424 499
          },
425 500
          "maxLength": 3,
426 501
          "type": "array"
427 502
        },
428 503
        "name": {
429 504
          "maxLength": 256,
430 505
          "type": "string"
431 506
        }
432 507
      },
433 508
      "required": [
434 509
        "name",
435 510
        "code"
436 511
      ],
437 512
      "type": "object"
438 513
    },
439 514
    "tier": {
440 515
      "knownValues": [
441 516
        "S",
442 517
        "A",
443 518
        "B",
444 519
        "C",
445 520
        "D",
446 521
        "F"
447 522
      ],
448 523
      "type": "string"
449 524
    },
450 525
    "viewer": {
451 526
      "properties": {
452 527
        "did": {
453 528
          "format": "did",
454 529
          "type": "string"
455 530
        },
456 531
        "role": {
457 532
          "knownValues": [
458 533
            "host",
459 534
            "player",
460 535
            "spectator"
461 536
          ],
462 537
          "type": "string"
463 538
        }
464 539
      },
465 540
      "required": [
466 541
        "role"
467 542
      ],
468 543
      "type": "object"
469 544
    },
470 545
    "vote": {
471 546
      "description": "Where one player put the item being revealed.",
472 547
      "properties": {
473 548
        "did": {
474 549
          "format": "did",
475 550
          "type": "string"
476 551
        },
477 552
        "tier": {
478 553
          "ref": "#tier",
479 554
          "type": "ref"
480 555
        }
481 556
      },
482 557
      "required": [
483 558
        "did",
484 559
        "tier"
485 560
      ],
486 561
      "type": "object"
487 562
    }
488 563
  },
489 564
  "id": "games.cavu.tier-madness.defs",
490 565
  "lexicon": 1
491 566
}

Compare Other Versions

Lexicon Garden

@