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