org.simocracy.gathering
Schema Diff
+18 -0
Compatibility Analysis
Backward Compatible
Backward compatible. 4 non-breaking changes.
Non-Breaking Changes (4)
- AddedVertex AddedVertex { vertex_id: "org.simocracy.gathering:body.logo" }
- AddedVertex AddedVertex { vertex_id: "org.simocracy.gathering:body.visibility" }
- AddedEdge AddedEdge { src: "org.simocracy.gathering:body", tgt: "org.simocracy.gathering:body.logo", kind: "prop", name: Some("logo") }
- AddedEdge AddedEdge { src: "org.simocracy.gathering:body", tgt: "org.simocracy.gathering:body.visibility", kind: "prop", name: Some("visibility") }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "org.simocracy.gathering:body.logo" }AddedVertex { vertex_id: "org.simocracy.gathering:body.visibility" }
Additional Notes
- Non-breaking: AddedEdge { src: "org.simocracy.gathering:body", tgt: "org.simocracy.gathering:body.logo", kind: "prop", name: Some("logo") }
- Non-breaking: AddedEdge { src: "org.simocracy.gathering:body", tgt: "org.simocracy.gathering:body.visibility", kind: "prop", name: Some("visibility") }
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
+
"logo": {
22
+
"type": "blob",
23
+
"accept": [
24
+
"image/png",
25
+
"image/jpeg",
26
+
"image/webp"
27
+
],
28
+
"maxSize": 1000000,
29
+
"description": "Square community logo displayed in navigation rails, pickers, and community cards."
30
+
},
21
31
"name": {
22
32
"type": "string",
23
33
"maxLength": 3000,
24
34
"description": "Display name of the event",
25
35
"maxGraphemes": 300
26
36
},
27
37
"dates": {
28
38
"type": "string",
29
39
"maxLength": 1000,
30
40
"description": "Human-readable date range (e.g. March 14-15, 2026)",
31
41
"maxGraphemes": 100
32
42
},
33
43
"image": {
34
44
"type": "blob",
35
45
"accept": [
36
46
"image/png",
37
47
"image/jpeg",
38
48
"image/webp"
39
49
],
40
50
"maxSize": 1000000,
41
51
"description": "Cover image for the event (ATProto blob)"
42
52
},
43
53
"status": {
44
54
"type": "string",
45
55
"description": "Current status of the gathering",
46
56
"knownValues": [
47
57
"application",
48
58
"upcoming",
49
59
"active",
50
60
"completed"
51
61
]
52
62
},
53
63
"context": {
54
64
"type": "string",
55
65
"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). Unbounded — length constrained only by ATProto's per-record size limit."
56
66
},
57
67
"simSize": {
58
68
"type": "string",
59
69
"description": "Size of sim avatars in this gathering's world. large=48px, normal=32px (senate default), small=20px (ftc-sf default).",
60
70
"knownValues": [
61
71
"large",
62
72
"normal",
63
73
"small"
64
74
]
65
75
},
66
76
"appRoute": {
67
77
"type": "string",
68
78
"maxLength": 1000,
69
79
"description": "Internal app route path (e.g. /senate, /ftc-sf) for built-in events"
70
80
},
71
81
"location": {
72
82
"type": "string",
73
83
"maxLength": 3000,
74
84
"description": "Physical or virtual location",
75
85
"maxGraphemes": 300
76
86
},
77
87
"simScope": {
78
88
"type": "string",
79
89
"description": "Which sims walk around in this gathering's world. council=only appointed council sims (default), all=every sim in Simocracy.",
80
90
"knownValues": [
81
91
"council",
82
92
"all"
83
93
]
84
94
},
85
95
"createdAt": {
86
96
"type": "string",
87
97
"format": "datetime",
88
98
"description": "Timestamp when the record was created"
89
99
},
90
100
"updatedAt": {
91
101
"type": "string",
92
102
"format": "datetime",
93
103
"description": "Timestamp when the gathering was last updated"
94
104
},
105
+
"visibility": {
106
+
"type": "string",
107
+
"description": "Whether this gathering is listed in public overviews. public=shown in the events gallery, profile pages, etc. (default). private=hidden from every overview list; only the creator sees it in their own listings, but anyone with the direct AT-URI / DID-PLC link or canonical slug URL can still load the detail page.",
108
+
"knownValues": [
109
+
"public",
110
+
"private"
111
+
]
112
+
},
95
113
"councilSims": {
96
114
"type": "array",
97
115
"items": {
98
116
"ref": "com.atproto.repo.strongRef",
99
117
"type": "ref"
100
118
},
101
119
"maxLength": 50,
102
120
"description": "Array of StrongRefs to sim records appointed to this gathering's council by the event creator."
103
121
},
104
122
"description": {
105
123
"type": "string",
106
124
"maxLength": 30000,
107
125
"description": "Full event description with details, agenda, etc.",
108
126
"maxGraphemes": 3000
109
127
},
110
128
"treasuryUsd": {
111
129
"type": "integer",
112
130
"minimum": 0,
113
131
"description": "Optional agentic treasury amount in USD that the council governs."
114
132
},
115
133
"collectionUri": {
116
134
"type": "string",
117
135
"maxLength": 5000,
118
136
"description": "AT-URI of an org.hypercerts.collection record for this gathering's proposals."
119
137
},
120
138
"contextFacets": {
121
139
"type": "array",
122
140
"items": {
123
141
"ref": "app.bsky.richtext.facet",
124
142
"type": "ref"
125
143
},
126
144
"description": "Rich text facets for context"
127
145
},
128
146
"gatheringType": {
129
147
"type": "string",
130
148
"description": "Type of gathering",
131
149
"knownValues": [
132
150
"funding",
133
151
"governance",
134
152
"hybrid"
135
153
]
136
154
},
137
155
"proposalScope": {
138
156
"type": "string",
139
157
"description": "Who can submit proposals to this gathering. council=only users who own at least one sim on the appointed council (event creator always allowed), all=anyone signed in (default).",
140
158
"knownValues": [
141
159
"council",
142
160
"all"
143
161
]
144
162
},
145
163
"buildingImageUrl": {
146
164
"type": "string",
147
165
"maxLength": 5000,
148
166
"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)."
149
167
},
150
168
"shortDescription": {
151
169
"type": "string",
152
170
"maxLength": 3000,
153
171
"description": "Brief summary for cards and previews",
154
172
"maxGraphemes": 300
155
173
},
156
174
"descriptionFacets": {
157
175
"type": "array",
158
176
"items": {
159
177
"ref": "app.bsky.richtext.facet",
160
178
"type": "ref"
161
179
},
162
180
"description": "Rich text facets for description"
163
181
},
164
182
"allocationMechanism": {
165
183
"type": "string",
166
184
"description": "The mechanism used to allocate the treasury among proposals.",
167
185
"knownValues": [
168
186
"quadratic-funding",
169
187
"s-process",
170
188
"condorcet"
171
189
]
172
190
},
173
191
"shortDescriptionFacets": {
174
192
"type": "array",
175
193
"items": {
176
194
"ref": "app.bsky.richtext.facet",
177
195
"type": "ref"
178
196
},
179
197
"description": "Rich text facets for shortDescription"
180
198
},
181
199
"suggestedInterviewTemplates": {
182
200
"type": "array",
183
201
"items": {
184
202
"ref": "com.atproto.repo.strongRef",
185
203
"type": "ref"
186
204
},
187
205
"maxLength": 5,
188
206
"description": "Optional: interview templates this gathering suggests to prospective council members."
189
207
}
190
208
}
191
209
},
192
210
"description": "A governance or funding event that users can create and participate in."
193
211
}
194
212
},
195
213
"$type": "com.atproto.lexicon.schema",
196
214
"lexicon": 1
197
215
}