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