org.simocracy.gathering
Schema Diff
+22 -3
Compatibility Analysis
Backward Compatible
Backward compatible. 8 non-breaking changes.
Non-Breaking Changes (8)
- 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.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.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.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
"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
53
"context": {
54
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
55
+
"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."
58
56
},
59
57
"simSize": {
60
58
"type": "string",
61
59
"description": "Size of sim avatars in this gathering's world. large=48px, normal=32px (senate default), small=20px (ftc-sf default).",
62
60
"knownValues": [
63
61
"large",
64
62
"normal",
65
63
"small"
66
64
]
67
65
},
68
66
"appRoute": {
69
67
"type": "string",
70
68
"maxLength": 1000,
71
69
"description": "Internal app route path (e.g. /senate, /ftc-sf) for built-in events"
72
70
},
73
71
"location": {
74
72
"type": "string",
75
73
"maxLength": 3000,
76
74
"description": "Physical or virtual location",
77
75
"maxGraphemes": 300
78
76
},
79
77
"simScope": {
80
78
"type": "string",
81
79
"description": "Which sims walk around in this gathering's world. council=only appointed council sims (default), all=every sim in Simocracy.",
82
80
"knownValues": [
83
81
"council",
84
82
"all"
85
83
]
86
84
},
87
85
"createdAt": {
88
86
"type": "string",
89
87
"format": "datetime",
90
88
"description": "Timestamp when the record was created"
91
89
},
90
+
"updatedAt": {
91
+
"type": "string",
92
+
"format": "datetime",
93
+
"description": "Timestamp when the gathering was last updated"
94
+
},
95
+
"visibility": {
96
+
"type": "string",
97
+
"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
+
"knownValues": [
99
+
"public",
100
+
"private"
101
+
]
102
+
},
92
103
"councilSims": {
93
104
"type": "array",
94
105
"items": {
95
106
"ref": "com.atproto.repo.strongRef",
96
107
"type": "ref"
97
108
},
98
109
"maxLength": 50,
99
110
"description": "Array of StrongRefs to sim records appointed to this gathering's council by the event creator."
100
111
},
101
112
"description": {
102
113
"type": "string",
103
114
"maxLength": 30000,
104
115
"description": "Full event description with details, agenda, etc.",
105
116
"maxGraphemes": 3000
106
117
},
107
118
"treasuryUsd": {
108
119
"type": "integer",
109
120
"minimum": 0,
110
121
"description": "Optional agentic treasury amount in USD that the council governs."
111
122
},
112
123
"collectionUri": {
113
124
"type": "string",
114
125
"maxLength": 5000,
115
126
"description": "AT-URI of an org.hypercerts.collection record for this gathering's proposals."
116
127
},
117
128
"contextFacets": {
118
129
"type": "array",
119
130
"items": {
120
131
"ref": "app.bsky.richtext.facet",
121
132
"type": "ref"
122
133
},
123
134
"description": "Rich text facets for context"
124
135
},
125
136
"gatheringType": {
126
137
"type": "string",
127
138
"description": "Type of gathering",
128
139
"knownValues": [
129
140
"funding",
130
141
"governance",
131
142
"hybrid"
132
143
]
133
144
},
145
+
"proposalScope": {
146
+
"type": "string",
147
+
"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
+
"knownValues": [
149
+
"council",
150
+
"all"
151
+
]
152
+
},
134
153
"buildingImageUrl": {
135
154
"type": "string",
136
155
"maxLength": 5000,
137
156
"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)."
138
157
},
139
158
"shortDescription": {
140
159
"type": "string",
141
160
"maxLength": 3000,
142
161
"description": "Brief summary for cards and previews",
143
162
"maxGraphemes": 300
144
163
},
145
164
"descriptionFacets": {
146
165
"type": "array",
147
166
"items": {
148
167
"ref": "app.bsky.richtext.facet",
149
168
"type": "ref"
150
169
},
151
170
"description": "Rich text facets for description"
152
171
},
153
172
"allocationMechanism": {
154
173
"type": "string",
155
174
"description": "The mechanism used to allocate the treasury among proposals.",
156
175
"knownValues": [
157
176
"quadratic-funding",
158
177
"s-process",
159
178
"condorcet"
160
179
]
161
180
},
162
181
"shortDescriptionFacets": {
163
182
"type": "array",
164
183
"items": {
165
184
"ref": "app.bsky.richtext.facet",
166
185
"type": "ref"
167
186
},
168
187
"description": "Rich text facets for shortDescription"
169
188
},
170
189
"suggestedInterviewTemplates": {
171
190
"type": "array",
172
191
"items": {
173
192
"ref": "com.atproto.repo.strongRef",
174
193
"type": "ref"
175
194
},
176
195
"maxLength": 5,
177
196
"description": "Optional: interview templates this gathering suggests to prospective council members."
178
197
}
179
198
}
180
199
},
181
200
"description": "A governance or funding event that users can create and participate in."
182
201
}
183
202
},
184
203
"$type": "com.atproto.lexicon.schema",
185
204
"lexicon": 1
186
205
}