org.latha.gathering
Schema Diff
+17 -124
Compatibility Analysis
Breaking Changes Detected
36 breaking changes, 23 non-breaking changes.
Breaking Changes (36)
- RequiredEdgeRemoved RequiredEdgeRemoved { vertex_id: "org.latha.gathering#uri", src: "org.latha.gathering#uri", tgt: "org.latha.gathering#uri.uri", kind: "prop", name: Some("uri") }
- RemovedVertex RemovedVertex { vertex_id: "org.latha.gathering#cancelled" }
- RemovedVertex RemovedVertex { vertex_id: "org.latha.gathering#hybrid" }
- RemovedVertex RemovedVertex { vertex_id: "org.latha.gathering#inperson" }
- RemovedVertex RemovedVertex { vertex_id: "org.latha.gathering#location" }
- RemovedVertex RemovedVertex { vertex_id: "org.latha.gathering#location.address" }
- RemovedVertex RemovedVertex { vertex_id: "org.latha.gathering#location.country" }
- RemovedVertex RemovedVertex { vertex_id: "org.latha.gathering#location.locality" }
- RemovedVertex RemovedVertex { vertex_id: "org.latha.gathering#location.name" }
- RemovedVertex RemovedVertex { vertex_id: "org.latha.gathering#location.postalCode" }
- RemovedVertex RemovedVertex { vertex_id: "org.latha.gathering#location.region" }
- RemovedVertex RemovedVertex { vertex_id: "org.latha.gathering#mode" }
- RemovedVertex RemovedVertex { vertex_id: "org.latha.gathering#planned" }
- RemovedVertex RemovedVertex { vertex_id: "org.latha.gathering#postponed" }
- RemovedVertex RemovedVertex { vertex_id: "org.latha.gathering#rescheduled" }
- RemovedVertex RemovedVertex { vertex_id: "org.latha.gathering#scheduled" }
- RemovedVertex RemovedVertex { vertex_id: "org.latha.gathering#status" }
- RemovedVertex RemovedVertex { vertex_id: "org.latha.gathering#uri" }
- RemovedVertex RemovedVertex { vertex_id: "org.latha.gathering#uri.name" }
- RemovedVertex RemovedVertex { vertex_id: "org.latha.gathering#uri.uri" }
- RemovedVertex RemovedVertex { vertex_id: "org.latha.gathering#virtual" }
- RemovedEdge RemovedEdge { src: "org.latha.gathering#location", tgt: "org.latha.gathering#location.address", kind: "prop", name: Some("address") }
- RemovedEdge RemovedEdge { src: "org.latha.gathering#location", tgt: "org.latha.gathering#location.country", kind: "prop", name: Some("country") }
- RemovedEdge RemovedEdge { src: "org.latha.gathering#location", tgt: "org.latha.gathering#location.locality", kind: "prop", name: Some("locality") }
- RemovedEdge RemovedEdge { src: "org.latha.gathering#location", tgt: "org.latha.gathering#location.name", kind: "prop", name: Some("name") }
- RemovedEdge RemovedEdge { src: "org.latha.gathering#location", tgt: "org.latha.gathering#location.postalCode", kind: "prop", name: Some("postalCode") }
- RemovedEdge RemovedEdge { src: "org.latha.gathering#location", tgt: "org.latha.gathering#location.region", kind: "prop", name: Some("region") }
- RemovedEdge RemovedEdge { src: "org.latha.gathering#uri", tgt: "org.latha.gathering#uri.name", kind: "prop", name: Some("name") }
- RemovedEdge RemovedEdge { src: "org.latha.gathering:body.locations:items", tgt: "org.latha.gathering#location", kind: "ref", name: None }
- RemovedEdge RemovedEdge { src: "org.latha.gathering:body.mode", tgt: "org.latha.gathering#mode", kind: "ref", name: None }
- RemovedEdge RemovedEdge { src: "org.latha.gathering:body.status", tgt: "org.latha.gathering#status", kind: "ref", name: None }
- RemovedEdge RemovedEdge { src: "org.latha.gathering:body.uris:items", tgt: "org.latha.gathering#uri", kind: "ref", name: None }
- KindChanged KindChanged { vertex_id: "org.latha.gathering:body.locations:items", old_kind: "ref", new_kind: "union" }
- ConstraintTightened ConstraintTightened { vertex_id: "org.latha.gathering:body.uris:items", sort: "ref", old_value: "org.latha.gathering#uri", new_value: "community.lexicon.calendar.event#uri" }
- ConstraintTightened ConstraintTightened { vertex_id: "org.latha.gathering:body.status", sort: "ref", old_value: "org.latha.gathering#status", new_value: "community.lexicon.calendar.event#status" }
- ConstraintTightened ConstraintTightened { vertex_id: "org.latha.gathering:body.mode", sort: "ref", old_value: "org.latha.gathering#mode", new_value: "community.lexicon.calendar.event#mode" }
Non-Breaking Changes (23)
- AddedVertex AddedVertex { vertex_id: "community.lexicon.calendar.event#mode" }
- AddedVertex AddedVertex { vertex_id: "community.lexicon.calendar.event#status" }
- AddedVertex AddedVertex { vertex_id: "community.lexicon.calendar.event#uri" }
- AddedVertex AddedVertex { vertex_id: "community.lexicon.location.address" }
- AddedVertex AddedVertex { vertex_id: "community.lexicon.location.fsq" }
- AddedVertex AddedVertex { vertex_id: "community.lexicon.location.geo" }
- AddedVertex AddedVertex { vertex_id: "community.lexicon.location.hthree" }
- AddedVertex AddedVertex { vertex_id: "org.latha.gathering:body.locations:items:variant0" }
- AddedVertex AddedVertex { vertex_id: "org.latha.gathering:body.locations:items:variant1" }
- AddedVertex AddedVertex { vertex_id: "org.latha.gathering:body.locations:items:variant2" }
- AddedVertex AddedVertex { vertex_id: "org.latha.gathering:body.locations:items:variant3" }
- AddedEdge AddedEdge { src: "org.latha.gathering:body.locations:items", tgt: "org.latha.gathering:body.locations:items:variant0", kind: "variant", name: Some("community.lexicon.location.address") }
- AddedEdge AddedEdge { src: "org.latha.gathering:body.locations:items", tgt: "org.latha.gathering:body.locations:items:variant1", kind: "variant", name: Some("community.lexicon.location.geo") }
- AddedEdge AddedEdge { src: "org.latha.gathering:body.locations:items", tgt: "org.latha.gathering:body.locations:items:variant2", kind: "variant", name: Some("community.lexicon.location.fsq") }
- AddedEdge AddedEdge { src: "org.latha.gathering:body.locations:items", tgt: "org.latha.gathering:body.locations:items:variant3", kind: "variant", name: Some("community.lexicon.location.hthree") }
- AddedEdge AddedEdge { src: "org.latha.gathering:body.locations:items:variant0", tgt: "community.lexicon.location.address", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "org.latha.gathering:body.locations:items:variant1", tgt: "community.lexicon.location.geo", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "org.latha.gathering:body.locations:items:variant2", tgt: "community.lexicon.location.fsq", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "org.latha.gathering:body.locations:items:variant3", tgt: "community.lexicon.location.hthree", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "org.latha.gathering:body.mode", tgt: "community.lexicon.calendar.event#mode", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "org.latha.gathering:body.status", tgt: "community.lexicon.calendar.event#status", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "org.latha.gathering:body.uris:items", tgt: "community.lexicon.calendar.event#uri", kind: "ref", name: None }
- ConstraintRemoved ConstraintRemoved { vertex_id: "org.latha.gathering:body.locations:items", sort: "ref" }
Migration Guidance
Removed Elements
RemovedVertex { vertex_id: "org.latha.gathering#cancelled" }RemovedVertex { vertex_id: "org.latha.gathering#hybrid" }RemovedVertex { vertex_id: "org.latha.gathering#inperson" }RemovedVertex { vertex_id: "org.latha.gathering#location" }RemovedVertex { vertex_id: "org.latha.gathering#location.address" }RemovedVertex { vertex_id: "org.latha.gathering#location.country" }RemovedVertex { vertex_id: "org.latha.gathering#location.locality" }RemovedVertex { vertex_id: "org.latha.gathering#location.name" }RemovedVertex { vertex_id: "org.latha.gathering#location.postalCode" }RemovedVertex { vertex_id: "org.latha.gathering#location.region" }RemovedVertex { vertex_id: "org.latha.gathering#mode" }RemovedVertex { vertex_id: "org.latha.gathering#planned" }RemovedVertex { vertex_id: "org.latha.gathering#postponed" }RemovedVertex { vertex_id: "org.latha.gathering#rescheduled" }RemovedVertex { vertex_id: "org.latha.gathering#scheduled" }RemovedVertex { vertex_id: "org.latha.gathering#status" }RemovedVertex { vertex_id: "org.latha.gathering#uri" }RemovedVertex { vertex_id: "org.latha.gathering#uri.name" }RemovedVertex { vertex_id: "org.latha.gathering#uri.uri" }RemovedVertex { vertex_id: "org.latha.gathering#virtual" }
Added Elements
AddedVertex { vertex_id: "community.lexicon.calendar.event#mode" }AddedVertex { vertex_id: "community.lexicon.calendar.event#status" }AddedVertex { vertex_id: "community.lexicon.calendar.event#uri" }AddedVertex { vertex_id: "community.lexicon.location.address" }AddedVertex { vertex_id: "community.lexicon.location.fsq" }AddedVertex { vertex_id: "community.lexicon.location.geo" }AddedVertex { vertex_id: "community.lexicon.location.hthree" }AddedVertex { vertex_id: "org.latha.gathering:body.locations:items:variant0" }AddedVertex { vertex_id: "org.latha.gathering:body.locations:items:variant1" }AddedVertex { vertex_id: "org.latha.gathering:body.locations:items:variant2" }AddedVertex { vertex_id: "org.latha.gathering:body.locations:items:variant3" }
Constraint Changes
- ConstraintTightened ConstraintTightened { vertex_id: "org.latha.gathering:body.status", sort: "ref", old_value: "org.latha.gathering#status", new_value: "community.lexicon.calendar.event#status" }
- ConstraintTightened ConstraintTightened { vertex_id: "org.latha.gathering:body.mode", sort: "ref", old_value: "org.latha.gathering#mode", new_value: "community.lexicon.calendar.event#mode" }
- ConstraintTightened ConstraintTightened { vertex_id: "org.latha.gathering:body.uris:items", sort: "ref", old_value: "org.latha.gathering#uri", new_value: "community.lexicon.calendar.event#uri" }
- ConstraintRemoved ConstraintRemoved { vertex_id: "org.latha.gathering:body.locations:items", sort: "ref" }
Additional Notes
- Breaking: RequiredEdgeRemoved { vertex_id: "org.latha.gathering#uri", src: "org.latha.gathering#uri", tgt: "org.latha.gathering#uri.uri", kind: "prop", name: Some("uri") }
- Breaking: RemovedEdge { src: "org.latha.gathering#location", tgt: "org.latha.gathering#location.address", kind: "prop", name: Some("address") }
- Breaking: RemovedEdge { src: "org.latha.gathering#location", tgt: "org.latha.gathering#location.country", kind: "prop", name: Some("country") }
- Breaking: RemovedEdge { src: "org.latha.gathering#location", tgt: "org.latha.gathering#location.locality", kind: "prop", name: Some("locality") }
- Breaking: RemovedEdge { src: "org.latha.gathering#location", tgt: "org.latha.gathering#location.name", kind: "prop", name: Some("name") }
- Breaking: RemovedEdge { src: "org.latha.gathering#location", tgt: "org.latha.gathering#location.postalCode", kind: "prop", name: Some("postalCode") }
- Breaking: RemovedEdge { src: "org.latha.gathering#location", tgt: "org.latha.gathering#location.region", kind: "prop", name: Some("region") }
- Breaking: RemovedEdge { src: "org.latha.gathering#uri", tgt: "org.latha.gathering#uri.name", kind: "prop", name: Some("name") }
- Breaking: RemovedEdge { src: "org.latha.gathering:body.locations:items", tgt: "org.latha.gathering#location", kind: "ref", name: None }
- Breaking: RemovedEdge { src: "org.latha.gathering:body.mode", tgt: "org.latha.gathering#mode", kind: "ref", name: None }
- Breaking: RemovedEdge { src: "org.latha.gathering:body.status", tgt: "org.latha.gathering#status", kind: "ref", name: None }
- Breaking: RemovedEdge { src: "org.latha.gathering:body.uris:items", tgt: "org.latha.gathering#uri", kind: "ref", name: None }
- Breaking: KindChanged { vertex_id: "org.latha.gathering:body.locations:items", old_kind: "ref", new_kind: "union" }
- Non-breaking: AddedEdge { src: "org.latha.gathering:body.locations:items", tgt: "org.latha.gathering:body.locations:items:variant0", kind: "variant", name: Some("community.lexicon.location.address") }
- Non-breaking: AddedEdge { src: "org.latha.gathering:body.locations:items", tgt: "org.latha.gathering:body.locations:items:variant1", kind: "variant", name: Some("community.lexicon.location.geo") }
- Non-breaking: AddedEdge { src: "org.latha.gathering:body.locations:items", tgt: "org.latha.gathering:body.locations:items:variant2", kind: "variant", name: Some("community.lexicon.location.fsq") }
- Non-breaking: AddedEdge { src: "org.latha.gathering:body.locations:items", tgt: "org.latha.gathering:body.locations:items:variant3", kind: "variant", name: Some("community.lexicon.location.hthree") }
- Non-breaking: AddedEdge { src: "org.latha.gathering:body.locations:items:variant0", tgt: "community.lexicon.location.address", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "org.latha.gathering:body.locations:items:variant1", tgt: "community.lexicon.location.geo", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "org.latha.gathering:body.locations:items:variant2", tgt: "community.lexicon.location.fsq", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "org.latha.gathering:body.locations:items:variant3", tgt: "community.lexicon.location.hthree", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "org.latha.gathering:body.mode", tgt: "community.lexicon.calendar.event#mode", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "org.latha.gathering:body.status", tgt: "community.lexicon.calendar.event#status", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "org.latha.gathering:body.uris:items", tgt: "community.lexicon.calendar.event#uri", kind: "ref", name: None }
1
1
{
2
2
"$type": "com.atproto.lexicon.schema",
3
3
"defs": {
4
4
"actorRef": {
5
5
"description": "A lightweight reference to an ATProto identity.",
6
6
"properties": {
7
7
"did": {
8
8
"description": "ATProto DID.",
9
9
"format": "did",
10
10
"type": "string"
11
11
},
12
12
"handle": {
13
13
"description": "Current ATProto handle.",
14
14
"type": "string"
15
15
}
16
16
},
17
17
"required": [
18
18
"did"
19
19
],
20
20
"type": "object"
21
21
},
22
22
"attendee": {
23
-
"description": "A rich attendee record with role, projects, and metadata. Extends community.lexicon.calendar.rsvp with role, bio, projects, and tags.",
23
+
"description": "A rich attendee record extending community.lexicon.calendar.rsvp with role, bio, projects, and tags. While rsvp is a separate record linking a subject to a status, attendee embeds identity and metadata directly.",
24
24
"properties": {
25
25
"bio": {
26
26
"description": "Short bio or tagline.",
27
27
"maxGraphemes": 500,
28
28
"maxLength": 5000,
29
29
"type": "string"
30
30
},
31
31
"did": {
32
32
"description": "ATProto DID.",
33
33
"format": "did",
34
34
"type": "string"
35
35
},
36
36
"displayName": {
37
37
"description": "Display name.",
38
38
"maxGraphemes": 100,
39
39
"maxLength": 1000,
40
40
"type": "string"
41
41
},
42
42
"handle": {
43
43
"description": "ATProto handle.",
44
44
"type": "string"
45
45
},
46
46
"notes": {
47
47
"description": "Researcher notes about this attendee.",
48
48
"maxGraphemes": 1000,
49
49
"maxLength": 10000,
50
50
"type": "string"
51
51
},
52
52
"projects": {
53
53
"description": "Projects this person builds or maintains.",
54
54
"items": {
55
55
"ref": "org.latha.gathering#projectRef",
56
56
"type": "ref"
57
57
},
58
58
"type": "array"
59
59
},
60
60
"role": {
61
61
"description": "Role in the gathering: host, organizer, participant, speaker, volunteer.",
62
62
"ref": "org.latha.gathering#role",
63
63
"type": "ref"
64
64
},
65
65
"tags": {
66
66
"description": "Interest tags (a11y, privacy, transit, category-theory, etc.).",
67
67
"items": {
68
68
"maxLength": 640,
69
69
"type": "string"
70
70
},
71
71
"type": "array"
72
72
}
73
73
},
74
74
"required": [
75
75
"did"
76
76
],
77
77
"type": "object"
78
78
},
79
-
"cancelled": {
80
-
"description": "Gathering has been cancelled.",
81
-
"type": "token"
82
-
},
83
79
"host": {
84
80
"description": "Host of the gathering.",
85
81
"type": "token"
86
82
},
87
-
"hybrid": {
88
-
"description": "Hybrid (in-person and virtual) gathering.",
89
-
"type": "token"
90
-
},
91
-
"inperson": {
92
-
"description": "In-person gathering.",
93
-
"type": "token"
94
-
},
95
-
"location": {
96
-
"description": "A physical location.",
97
-
"properties": {
98
-
"address": {
99
-
"description": "Street address.",
100
-
"maxGraphemes": 200,
101
-
"maxLength": 2000,
102
-
"type": "string"
103
-
},
104
-
"country": {
105
-
"description": "ISO 3166-1 alpha-2 country code.",
106
-
"maxLength": 2,
107
-
"type": "string"
108
-
},
109
-
"locality": {
110
-
"description": "City or locality.",
111
-
"maxGraphemes": 50,
112
-
"maxLength": 500,
113
-
"type": "string"
114
-
},
115
-
"name": {
116
-
"description": "Venue name.",
117
-
"maxGraphemes": 100,
118
-
"maxLength": 1000,
119
-
"type": "string"
120
-
},
121
-
"postalCode": {
122
-
"description": "Postal code.",
123
-
"maxLength": 20,
124
-
"type": "string"
125
-
},
126
-
"region": {
127
-
"description": "State or province.",
128
-
"maxGraphemes": 50,
129
-
"maxLength": 500,
130
-
"type": "string"
131
-
}
132
-
},
133
-
"type": "object"
134
-
},
135
83
"main": {
136
84
"description": "A community gathering or meetup with structured attendee data and extensible thematic sections.",
137
85
"key": "tid",
138
86
"record": {
139
87
"properties": {
140
88
"attendees": {
141
89
"description": "People who attended the gathering, with roles and metadata.",
142
90
"items": {
143
91
"ref": "org.latha.gathering#attendee",
144
92
"type": "ref"
145
93
},
146
94
"type": "array"
147
95
},
148
96
"createdAt": {
149
97
"description": "Client-declared timestamp when this record was created.",
150
98
"format": "datetime",
151
99
"type": "string"
152
100
},
153
101
"description": {
154
102
"description": "Brief description of the gathering.",
155
103
"maxGraphemes": 2000,
156
104
"maxLength": 20000,
157
105
"type": "string"
158
106
},
159
107
"endsAt": {
160
108
"description": "Client-declared timestamp when the gathering ends.",
161
109
"format": "datetime",
162
110
"type": "string"
163
111
},
164
112
"format": {
165
113
"description": "Gathering format (e.g., unconference, workshop, hackathon, panel).",
166
114
"maxGraphemes": 100,
167
115
"maxLength": 1000,
168
116
"type": "string"
169
117
},
170
118
"host": {
171
119
"description": "The primary host or organizing identity.",
172
120
"ref": "org.latha.gathering#actorRef",
173
121
"type": "ref"
174
122
},
175
123
"locations": {
176
-
"description": "Where the gathering takes place.",
124
+
"description": "Where the gathering takes place. Reuses community.lexicon.location union (address, geo, fsq, hthree).",
177
125
"items": {
178
-
"ref": "org.latha.gathering#location",
179
-
"type": "ref"
126
+
"refs": [
127
+
"community.lexicon.location.address",
128
+
"community.lexicon.location.geo",
129
+
"community.lexicon.location.fsq",
130
+
"community.lexicon.location.hthree"
131
+
],
132
+
"type": "union"
180
133
},
181
134
"type": "array"
182
135
},
183
136
"mode": {
184
-
"description": "The attendance mode of the gathering.",
185
-
"ref": "org.latha.gathering#mode",
137
+
"description": "The attendance mode of the gathering. Reuses community.lexicon.calendar.event#mode.",
138
+
"ref": "community.lexicon.calendar.event#mode",
186
139
"type": "ref"
187
140
},
188
141
"name": {
189
142
"description": "Name of the gathering.",
190
143
"maxGraphemes": 200,
191
144
"maxLength": 2000,
192
145
"type": "string"
193
146
},
194
147
"sections": {
195
148
"description": "Modular sections for grouping and analyzing the gathering. Each entry must specify a $type. Built-in: thematicCluster. Other lexicons may add more.",
196
149
"items": {
197
150
"closed": false,
198
151
"refs": [
199
152
"org.latha.gathering#thematicCluster"
200
153
],
201
154
"type": "union"
202
155
},
203
156
"type": "array"
204
157
},
205
158
"startsAt": {
206
159
"description": "Client-declared timestamp when the gathering starts.",
207
160
"format": "datetime",
208
161
"type": "string"
209
162
},
210
163
"status": {
211
-
"description": "The status of the gathering.",
212
-
"ref": "org.latha.gathering#status",
164
+
"description": "The status of the gathering. Reuses community.lexicon.calendar.event#status.",
165
+
"ref": "community.lexicon.calendar.event#status",
213
166
"type": "ref"
214
167
},
215
168
"uris": {
216
-
"description": "Platform links (OpenMeet, Meetup.com, etc.).",
169
+
"description": "Platform links (OpenMeet, Meetup.com, etc.). Reuses community.lexicon.calendar.event#uri.",
217
170
"items": {
218
-
"ref": "org.latha.gathering#uri",
171
+
"ref": "community.lexicon.calendar.event#uri",
219
172
"type": "ref"
220
173
},
221
174
"type": "array"
222
175
}
223
176
},
224
177
"required": [
225
178
"name",
226
179
"createdAt"
227
180
],
228
181
"type": "object"
229
182
},
230
183
"type": "record"
231
184
},
232
-
"mode": {
233
-
"description": "Attendance mode of the gathering.",
234
-
"knownValues": [
235
-
"org.latha.gathering#inperson",
236
-
"org.latha.gathering#hybrid",
237
-
"org.latha.gathering#virtual"
238
-
],
239
-
"type": "string"
240
-
},
241
185
"organizer": {
242
186
"description": "Organizer of the gathering.",
243
187
"type": "token"
244
188
},
245
189
"participant": {
246
190
"description": "Participant in the gathering.",
247
191
"type": "token"
248
192
},
249
-
"planned": {
250
-
"description": "Gathering is planned.",
251
-
"type": "token"
252
-
},
253
-
"postponed": {
254
-
"description": "Gathering has been postponed.",
255
-
"type": "token"
256
-
},
257
193
"projectRef": {
258
194
"description": "A reference to a project or tool.",
259
195
"properties": {
260
196
"name": {
261
197
"description": "Project name.",
262
198
"maxGraphemes": 100,
263
199
"maxLength": 1000,
264
200
"type": "string"
265
201
},
266
202
"uri": {
267
203
"description": "Link to the project.",
268
204
"format": "uri",
269
205
"type": "string"
270
206
}
271
207
},
272
208
"required": [
273
209
"name"
274
210
],
275
211
"type": "object"
276
-
},
277
-
"rescheduled": {
278
-
"description": "Gathering has been rescheduled.",
279
-
"type": "token"
280
212
},
281
213
"role": {
282
-
"description": "Role of an attendee in the gathering.",
214
+
"description": "Role of an attendee in the gathering. No existing lexicon defines attendee roles; community.lexicon.calendar.rsvp only has going/interested/notgoing.",
283
215
"knownValues": [
284
216
"org.latha.gathering#host",
285
217
"org.latha.gathering#organizer",
286
218
"org.latha.gathering#participant",
287
219
"org.latha.gathering#speaker",
288
220
"org.latha.gathering#volunteer"
289
221
],
290
222
"type": "string"
291
223
},
292
-
"scheduled": {
293
-
"description": "Gathering is scheduled.",
294
-
"type": "token"
295
-
},
296
224
"speaker": {
297
225
"description": "Speaker at the gathering.",
298
226
"type": "token"
299
227
},
300
-
"status": {
301
-
"description": "Status of the gathering.",
302
-
"knownValues": [
303
-
"org.latha.gathering#planned",
304
-
"org.latha.gathering#scheduled",
305
-
"org.latha.gathering#rescheduled",
306
-
"org.latha.gathering#postponed",
307
-
"org.latha.gathering#cancelled"
308
-
],
309
-
"type": "string"
310
-
},
311
228
"thematicCluster": {
312
229
"description": "A group of attendees united by a shared theme, practice, or infrastructure role. Each cluster names a social or technical layer present at the gathering.",
313
230
"properties": {
314
231
"description": {
315
232
"description": "What brings this group together or what they provide.",
316
233
"maxGraphemes": 1000,
317
234
"maxLength": 10000,
318
235
"type": "string"
319
236
},
320
237
"members": {
321
238
"description": "People in this cluster.",
322
239
"items": {
323
240
"ref": "org.latha.gathering#actorRef",
324
241
"type": "ref"
325
242
},
326
243
"type": "array"
327
244
},
328
245
"name": {
329
246
"description": "Cluster name (e.g., Organizer Core, Protocol Infrastructure, Technologist-Philosophers).",
330
247
"maxGraphemes": 100,
331
248
"maxLength": 1000,
332
249
"type": "string"
333
250
}
334
251
},
335
252
"required": [
336
253
"name"
337
254
],
338
255
"type": "object"
339
256
},
340
-
"uri": {
341
-
"description": "A named link.",
342
-
"properties": {
343
-
"name": {
344
-
"description": "Label for the URI.",
345
-
"maxGraphemes": 50,
346
-
"maxLength": 500,
347
-
"type": "string"
348
-
},
349
-
"uri": {
350
-
"description": "The URI.",
351
-
"format": "uri",
352
-
"type": "string"
353
-
}
354
-
},
355
-
"required": [
356
-
"uri"
357
-
],
358
-
"type": "object"
359
-
},
360
-
"virtual": {
361
-
"description": "Virtual gathering.",
362
-
"type": "token"
363
-
},
364
257
"volunteer": {
365
258
"description": "Volunteer at the gathering.",
366
259
"type": "token"
367
260
}
368
261
},
369
-
"description": "A community gathering or meetup record with attendees and extensible thematic sections. Covers event metadata, rich attendee data, and modular grouping of people by theme or infrastructure role. Schema: https://gathering.latha.org/#at://did:plc:ngokl2gnmpbvuvrfckja3g7p/org.latha.gathering/3mkdvt6ljja2e",
262
+
"description": "A community gathering or meetup with structured attendee data and extensible thematic sections. Reuses community.lexicon.calendar.event for mode/status/uris and community.lexicon.location for locations. Adds rich attendee records (role, bio, projects, tags) and thematic clustering.",
370
263
"id": "org.latha.gathering",
371
264
"lexicon": 1
372
265
}