me.byjp.pesos.sts2.run
Schema Diff
+22 -5
Compatibility Analysis
Breaking Changes Detected
1 breaking change, 6 non-breaking changes.
Breaking Changes (1)
- KindChanged KindChanged { vertex_id: "me.byjp.pesos.sts2.run:body.allies:items", old_kind: "string", new_kind: "ref" }
Non-Breaking Changes (6)
- AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#ally" }
- AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#ally.atproto" }
- AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#ally.steam" }
- AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run#ally", tgt: "me.byjp.pesos.sts2.run#ally.atproto", kind: "prop", name: Some("atproto") }
- AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run#ally", tgt: "me.byjp.pesos.sts2.run#ally.steam", kind: "prop", name: Some("steam") }
- ConstraintRemoved ConstraintRemoved { vertex_id: "me.byjp.pesos.sts2.run:body.allies:items", sort: "minLength" }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#ally" }AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#ally.atproto" }AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#ally.steam" }
Constraint Changes
- ConstraintRemoved ConstraintRemoved { vertex_id: "me.byjp.pesos.sts2.run:body.allies:items", sort: "minLength" }
Additional Notes
- Breaking: KindChanged { vertex_id: "me.byjp.pesos.sts2.run:body.allies:items", old_kind: "string", new_kind: "ref" }
- Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run#ally", tgt: "me.byjp.pesos.sts2.run#ally.atproto", kind: "prop", name: Some("atproto") }
- Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run#ally", tgt: "me.byjp.pesos.sts2.run#ally.steam", kind: "prop", name: Some("steam") }
1
1
{
2
2
"id": "me.byjp.pesos.sts2.run",
3
3
"defs": {
4
+
"ally": {
5
+
"type": "object",
6
+
"required": [
7
+
"steam"
8
+
],
9
+
"properties": {
10
+
"steam": {
11
+
"type": "string",
12
+
"description": "SteamID64 as a decimal string."
13
+
},
14
+
"atproto": {
15
+
"type": "string",
16
+
"format": "did",
17
+
"description": "Atproto DID, when known."
18
+
}
19
+
},
20
+
"description": "A co-op peer. Identified by SteamID64 always; an atproto DID is included when we've resolved one for this Steam user."
21
+
},
4
22
"main": {
5
23
"key": "tid",
6
24
"type": "record",
7
25
"record": {
8
26
"type": "object",
9
27
"required": [
10
28
"outcome",
11
29
"character",
12
30
"ascension",
13
31
"seed",
14
32
"startedAt",
15
33
"updatedAt"
16
34
],
17
35
"properties": {
18
36
"act": {
19
37
"type": "integer",
20
38
"maximum": 4,
21
39
"minimum": 1
22
40
},
23
41
"deck": {
24
42
"type": "array",
25
43
"items": {
26
44
"type": "string"
27
45
},
28
-
"description": "Card ids in the final deck."
46
+
"description": "Card ids in the player's deck."
29
47
},
30
48
"game": {
31
49
"type": "string",
32
50
"format": "at-uri",
33
51
"description": "Optional at-uri of the canonical games.gamesgamesgamesgames.actor.game record for StS2."
34
52
},
35
53
"seed": {
36
54
"type": "string",
37
55
"description": "Run seed as displayed in-game."
38
56
},
39
57
"floor": {
40
58
"type": "integer",
41
59
"minimum": 0
42
60
},
43
61
"score": {
44
62
"type": "integer",
45
63
"minimum": 0
46
64
},
47
65
"allies": {
48
66
"type": "array",
49
67
"items": {
50
-
"type": "string",
51
-
"format": "did",
52
-
"minLength": 1
68
+
"ref": "#ally",
69
+
"type": "ref"
53
70
},
54
-
"description": "DIDs identifying other players in a multiplayer run."
71
+
"description": "Other players in a multiplayer run. Each entry always carries the peer's SteamID64; when we've been able to resolve it, the atproto DID is included too."
55
72
},
56
73
"relics": {
57
74
"type": "array",
58
75
"items": {
59
76
"type": "string"
60
77
},
61
78
"description": "Relic ids held at run end."
62
79
},
63
80
"endedAt": {
64
81
"type": "string",
65
82
"format": "datetime"
66
83
},
67
84
"outcome": {
68
85
"type": "string",
69
86
"description": "How the run ended.",
70
87
"knownValues": [
71
88
"in_progress",
72
89
"victory",
73
90
"death",
74
91
"abandoned"
75
92
]
76
93
},
77
94
"potions": {
78
95
"type": "array",
79
96
"items": {
80
97
"type": "string"
81
98
},
82
99
"description": "Potion ids currently held."
83
100
},
84
101
"killedBy": {
85
102
"type": "string",
86
103
"description": "Enemy / event that ended the run, if applicable."
87
104
},
88
105
"statsRef": {
89
106
"type": "string",
90
107
"format": "at-uri",
91
108
"description": "at-uri of the user's games.gamesgamesgamesgames.actor.stats record for StS2, updated alongside this run."
92
109
},
93
110
"ascension": {
94
111
"type": "integer",
95
112
"maximum": 20,
96
113
"minimum": 0
97
114
},
98
115
"character": {
99
116
"type": "string",
100
117
"description": "Character class id (e.g. 'ironclad', 'silent')."
101
118
},
102
119
"startedAt": {
103
120
"type": "string",
104
121
"format": "datetime"
105
122
},
106
123
"updatedAt": {
107
124
"type": "string",
108
125
"format": "datetime"
109
126
},
110
127
"modVersion": {
111
128
"type": "string"
112
129
},
113
130
"gameVersion": {
114
131
"type": "string"
115
132
},
116
133
"durationSeconds": {
117
134
"type": "integer",
118
135
"minimum": 0
119
136
}
120
137
}
121
138
},
122
139
"description": "A single Slay the Spire 2 run."
123
140
}
124
141
},
125
142
"$type": "com.atproto.lexicon.schema",
126
143
"lexicon": 1
127
144
}