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