org.simocracy.gathering
Schema Diff
+31 -0
Compatibility Analysis
Breaking Changes Detected
2 breaking changes, 12 non-breaking changes.
Breaking Changes (2)
- ConstraintAdded ConstraintAdded { vertex_id: "org.simocracy.gathering:body.context", sort: "maxGraphemes", value: "5000" }
- ConstraintAdded ConstraintAdded { vertex_id: "org.simocracy.gathering:body.context", sort: "maxLength", value: "50000" }
Non-Breaking Changes (12)
- AddedVertex AddedVertex { vertex_id: "org.simocracy.gathering:body.context" }
- AddedVertex AddedVertex { vertex_id: "org.simocracy.gathering:body.contextFacets" }
- AddedVertex AddedVertex { vertex_id: "org.simocracy.gathering:body.contextFacets:items" }
- AddedVertex AddedVertex { vertex_id: "org.simocracy.gathering:body.simScope" }
- AddedVertex AddedVertex { vertex_id: "org.simocracy.gathering:body.suggestedInterviewTemplates" }
- AddedVertex AddedVertex { vertex_id: "org.simocracy.gathering:body.suggestedInterviewTemplates:items" }
- AddedEdge AddedEdge { src: "org.simocracy.gathering:body", tgt: "org.simocracy.gathering:body.context", kind: "prop", name: Some("context") }
- AddedEdge AddedEdge { src: "org.simocracy.gathering:body", tgt: "org.simocracy.gathering:body.contextFacets", kind: "prop", name: Some("contextFacets") }
- AddedEdge AddedEdge { src: "org.simocracy.gathering:body", tgt: "org.simocracy.gathering:body.simScope", kind: "prop", name: Some("simScope") }
- AddedEdge AddedEdge { src: "org.simocracy.gathering:body", tgt: "org.simocracy.gathering:body.suggestedInterviewTemplates", kind: "prop", name: Some("suggestedInterviewTemplates") }
- AddedEdge AddedEdge { src: "org.simocracy.gathering:body.contextFacets", tgt: "org.simocracy.gathering:body.contextFacets:items", kind: "items", name: None }
- AddedEdge AddedEdge { src: "org.simocracy.gathering:body.suggestedInterviewTemplates", tgt: "org.simocracy.gathering:body.suggestedInterviewTemplates:items", kind: "items", name: None }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "org.simocracy.gathering:body.context" }AddedVertex { vertex_id: "org.simocracy.gathering:body.contextFacets" }AddedVertex { vertex_id: "org.simocracy.gathering:body.contextFacets:items" }AddedVertex { vertex_id: "org.simocracy.gathering:body.simScope" }AddedVertex { vertex_id: "org.simocracy.gathering:body.suggestedInterviewTemplates" }AddedVertex { vertex_id: "org.simocracy.gathering:body.suggestedInterviewTemplates:items" }
Constraint Changes
- ConstraintAdded ConstraintAdded { vertex_id: "org.simocracy.gathering:body.context", sort: "maxGraphemes", value: "5000" }
- ConstraintAdded ConstraintAdded { vertex_id: "org.simocracy.gathering:body.context", sort: "maxLength", value: "50000" }
Additional Notes
- Non-breaking: AddedEdge { src: "org.simocracy.gathering:body", tgt: "org.simocracy.gathering:body.context", kind: "prop", name: Some("context") }
- Non-breaking: AddedEdge { src: "org.simocracy.gathering:body", tgt: "org.simocracy.gathering:body.contextFacets", kind: "prop", name: Some("contextFacets") }
- Non-breaking: AddedEdge { src: "org.simocracy.gathering:body", tgt: "org.simocracy.gathering:body.simScope", kind: "prop", name: Some("simScope") }
- Non-breaking: AddedEdge { src: "org.simocracy.gathering:body", tgt: "org.simocracy.gathering:body.suggestedInterviewTemplates", kind: "prop", name: Some("suggestedInterviewTemplates") }
- Non-breaking: AddedEdge { src: "org.simocracy.gathering:body.contextFacets", tgt: "org.simocracy.gathering:body.contextFacets:items", kind: "items", name: None }
- Non-breaking: AddedEdge { src: "org.simocracy.gathering:body.suggestedInterviewTemplates", tgt: "org.simocracy.gathering:body.suggestedInterviewTemplates:items", kind: "items", name: None }
1
1
{
2
2
"id": "org.simocracy.gathering",
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
"name",
11
11
"gatheringType",
12
12
"status",
13
13
"createdAt"
14
14
],
15
15
"properties": {
16
16
"url": {
17
17
"type": "string",
18
18
"maxLength": 5000,
19
19
"description": "External link (e.g. Luma registration page)"
20
20
},
21
21
"name": {
22
22
"type": "string",
23
23
"maxLength": 3000,
24
24
"description": "Display name of the event",
25
25
"maxGraphemes": 300
26
26
},
27
27
"dates": {
28
28
"type": "string",
29
29
"maxLength": 1000,
30
30
"description": "Human-readable date range (e.g. March 14-15, 2026)",
31
31
"maxGraphemes": 100
32
32
},
33
33
"image": {
34
34
"type": "blob",
35
35
"accept": [
36
36
"image/png",
37
37
"image/jpeg",
38
38
"image/webp"
39
39
],
40
40
"maxSize": 1000000,
41
41
"description": "Cover image for the event (ATProto blob)"
42
42
},
43
43
"status": {
44
44
"type": "string",
45
45
"description": "Current status of the gathering",
46
46
"knownValues": [
47
47
"application",
48
48
"upcoming",
49
49
"active",
50
50
"completed"
51
51
]
52
52
},
53
+
"context": {
54
+
"type": "string",
55
+
"maxLength": 50000,
56
+
"description": "Background / briefing material for sims participating in this event. Shown to AI sims as event context so they can act efficiently (e.g. prior decisions, mission, constraints, data, links).",
57
+
"maxGraphemes": 5000
58
+
},
53
59
"simSize": {
54
60
"type": "string",
55
61
"description": "Size of sim avatars in this gathering's world. large=48px, normal=32px (senate default), small=20px (ftc-sf default).",
56
62
"knownValues": [
57
63
"large",
58
64
"normal",
59
65
"small"
60
66
]
61
67
},
62
68
"appRoute": {
63
69
"type": "string",
64
70
"maxLength": 1000,
65
71
"description": "Internal app route path (e.g. /senate, /ftc-sf) for built-in events"
66
72
},
67
73
"location": {
68
74
"type": "string",
69
75
"maxLength": 3000,
70
76
"description": "Physical or virtual location",
71
77
"maxGraphemes": 300
72
78
},
79
+
"simScope": {
80
+
"type": "string",
81
+
"description": "Which sims walk around in this gathering's world. council=only appointed council sims (default), all=every sim in Simocracy.",
82
+
"knownValues": [
83
+
"council",
84
+
"all"
85
+
]
86
+
},
73
87
"createdAt": {
74
88
"type": "string",
75
89
"format": "datetime",
76
90
"description": "Timestamp when the record was created"
77
91
},
78
92
"councilSims": {
79
93
"type": "array",
80
94
"items": {
81
95
"ref": "com.atproto.repo.strongRef",
82
96
"type": "ref"
83
97
},
84
98
"maxLength": 50,
85
99
"description": "Array of StrongRefs to sim records appointed to this gathering's council by the event creator."
86
100
},
87
101
"description": {
88
102
"type": "string",
89
103
"maxLength": 30000,
90
104
"description": "Full event description with details, agenda, etc.",
91
105
"maxGraphemes": 3000
92
106
},
93
107
"treasuryUsd": {
94
108
"type": "integer",
95
109
"minimum": 0,
96
110
"description": "Optional agentic treasury amount in USD that the council governs."
97
111
},
98
112
"collectionUri": {
99
113
"type": "string",
100
114
"maxLength": 5000,
101
115
"description": "AT-URI of an org.hypercerts.collection record for this gathering's proposals."
102
116
},
117
+
"contextFacets": {
118
+
"type": "array",
119
+
"items": {
120
+
"ref": "app.bsky.richtext.facet",
121
+
"type": "ref"
122
+
},
123
+
"description": "Rich text facets for context"
124
+
},
103
125
"gatheringType": {
104
126
"type": "string",
105
127
"description": "Type of gathering",
106
128
"knownValues": [
107
129
"funding",
108
130
"governance",
109
131
"hybrid"
110
132
]
111
133
},
112
134
"buildingImageUrl": {
113
135
"type": "string",
114
136
"maxLength": 5000,
115
137
"description": "URL of the building/venue image for this gathering. Can be an absolute URL or a path relative to the app (e.g. /senate.png, /frontiertower.webp)."
116
138
},
117
139
"shortDescription": {
118
140
"type": "string",
119
141
"maxLength": 3000,
120
142
"description": "Brief summary for cards and previews",
121
143
"maxGraphemes": 300
122
144
},
123
145
"descriptionFacets": {
124
146
"type": "array",
125
147
"items": {
126
148
"ref": "app.bsky.richtext.facet",
127
149
"type": "ref"
128
150
},
129
151
"description": "Rich text facets for description"
130
152
},
131
153
"allocationMechanism": {
132
154
"type": "string",
133
155
"description": "The mechanism used to allocate the treasury among proposals.",
134
156
"knownValues": [
135
157
"quadratic-funding",
136
158
"s-process",
137
159
"condorcet"
138
160
]
139
161
},
140
162
"shortDescriptionFacets": {
141
163
"type": "array",
142
164
"items": {
143
165
"ref": "app.bsky.richtext.facet",
144
166
"type": "ref"
145
167
},
146
168
"description": "Rich text facets for shortDescription"
169
+
},
170
+
"suggestedInterviewTemplates": {
171
+
"type": "array",
172
+
"items": {
173
+
"ref": "com.atproto.repo.strongRef",
174
+
"type": "ref"
175
+
},
176
+
"maxLength": 5,
177
+
"description": "Optional: interview templates this gathering suggests to prospective council members."
147
178
}
148
179
}
149
180
},
150
181
"description": "A governance or funding event that users can create and participate in."
151
182
}
152
183
},
153
184
"$type": "com.atproto.lexicon.schema",
154
185
"lexicon": 1
155
186
}