org.simocracy.gathering
Schema Diff
+10 -0
Compatibility Analysis
Backward Compatible
Backward compatible. 2 non-breaking changes.
Non-Breaking Changes (2)
- AddedVertex AddedVertex { vertex_id: "org.simocracy.gathering:body.logo" }
- AddedEdge AddedEdge { src: "org.simocracy.gathering:body", tgt: "org.simocracy.gathering:body.logo", kind: "prop", name: Some("logo") }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "org.simocracy.gathering:body.logo" }
Additional Notes
- Non-breaking: AddedEdge { src: "org.simocracy.gathering:body", tgt: "org.simocracy.gathering:body.logo", kind: "prop", name: Some("logo") }
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
},
95
105
"visibility": {
96
106
"type": "string",
97
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.",
98
108
"knownValues": [
99
109
"public",
100
110
"private"
101
111
]
102
112
},
103
113
"councilSims": {
104
114
"type": "array",
105
115
"items": {
106
116
"ref": "com.atproto.repo.strongRef",
107
117
"type": "ref"
108
118
},
109
119
"maxLength": 50,
110
120
"description": "Array of StrongRefs to sim records appointed to this gathering's council by the event creator."
111
121
},
112
122
"description": {
113
123
"type": "string",
114
124
"maxLength": 30000,
115
125
"description": "Full event description with details, agenda, etc.",
116
126
"maxGraphemes": 3000
117
127
},
118
128
"treasuryUsd": {
119
129
"type": "integer",
120
130
"minimum": 0,
121
131
"description": "Optional agentic treasury amount in USD that the council governs."
122
132
},
123
133
"collectionUri": {
124
134
"type": "string",
125
135
"maxLength": 5000,
126
136
"description": "AT-URI of an org.hypercerts.collection record for this gathering's proposals."
127
137
},
128
138
"contextFacets": {
129
139
"type": "array",
130
140
"items": {
131
141
"ref": "app.bsky.richtext.facet",
132
142
"type": "ref"
133
143
},
134
144
"description": "Rich text facets for context"
135
145
},
136
146
"gatheringType": {
137
147
"type": "string",
138
148
"description": "Type of gathering",
139
149
"knownValues": [
140
150
"funding",
141
151
"governance",
142
152
"hybrid"
143
153
]
144
154
},
145
155
"proposalScope": {
146
156
"type": "string",
147
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).",
148
158
"knownValues": [
149
159
"council",
150
160
"all"
151
161
]
152
162
},
153
163
"buildingImageUrl": {
154
164
"type": "string",
155
165
"maxLength": 5000,
156
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)."
157
167
},
158
168
"shortDescription": {
159
169
"type": "string",
160
170
"maxLength": 3000,
161
171
"description": "Brief summary for cards and previews",
162
172
"maxGraphemes": 300
163
173
},
164
174
"descriptionFacets": {
165
175
"type": "array",
166
176
"items": {
167
177
"ref": "app.bsky.richtext.facet",
168
178
"type": "ref"
169
179
},
170
180
"description": "Rich text facets for description"
171
181
},
172
182
"allocationMechanism": {
173
183
"type": "string",
174
184
"description": "The mechanism used to allocate the treasury among proposals.",
175
185
"knownValues": [
176
186
"quadratic-funding",
177
187
"s-process",
178
188
"condorcet"
179
189
]
180
190
},
181
191
"shortDescriptionFacets": {
182
192
"type": "array",
183
193
"items": {
184
194
"ref": "app.bsky.richtext.facet",
185
195
"type": "ref"
186
196
},
187
197
"description": "Rich text facets for shortDescription"
188
198
},
189
199
"suggestedInterviewTemplates": {
190
200
"type": "array",
191
201
"items": {
192
202
"ref": "com.atproto.repo.strongRef",
193
203
"type": "ref"
194
204
},
195
205
"maxLength": 5,
196
206
"description": "Optional: interview templates this gathering suggests to prospective council members."
197
207
}
198
208
}
199
209
},
200
210
"description": "A governance or funding event that users can create and participate in."
201
211
}
202
212
},
203
213
"$type": "com.atproto.lexicon.schema",
204
214
"lexicon": 1
205
215
}