org.latha.gathering

nandi.latha.org

Schema Diff

+17 -124

From

CID
bafyreigskbtu55t...
Indexed At
2026-04-25 22:34 UTC
View this version

To

CID
bafyreig4qh7fetn...
Indexed At
2026-04-25 23:14 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

29 breaking changes, 20 non-breaking changes.

Breaking Changes (29)
  • 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#uri", tgt: "org.latha.gathering#uri.uri", kind: "prop", name: Some("uri") }
  • KindChanged KindChanged { vertex_id: "org.latha.gathering:body.locations:items", old_kind: "ref", new_kind: "union" }
Non-Breaking Changes (20)
  • 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") }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "org.latha.gathering#location.postalCode", sort: "maxLength" }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "org.latha.gathering#location.country", sort: "maxLength" }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "org.latha.gathering#location.address", sort: "maxLength" }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "org.latha.gathering#location.address", sort: "maxGraphemes" }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "org.latha.gathering#location.region", sort: "maxLength" }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "org.latha.gathering#location.region", sort: "maxGraphemes" }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "org.latha.gathering#location.name", sort: "maxGraphemes" }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "org.latha.gathering#location.name", sort: "maxLength" }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "org.latha.gathering#uri.name", sort: "maxLength" }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "org.latha.gathering#uri.name", sort: "maxGraphemes" }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "org.latha.gathering#location.locality", sort: "maxLength" }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "org.latha.gathering#location.locality", sort: "maxGraphemes" }

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: "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

  • ConstraintRemoved ConstraintRemoved { vertex_id: "org.latha.gathering#location.region", sort: "maxLength" }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "org.latha.gathering#location.region", sort: "maxGraphemes" }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "org.latha.gathering#location.postalCode", sort: "maxLength" }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "org.latha.gathering#location.name", sort: "maxLength" }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "org.latha.gathering#location.name", sort: "maxGraphemes" }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "org.latha.gathering#location.locality", sort: "maxGraphemes" }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "org.latha.gathering#location.locality", sort: "maxLength" }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "org.latha.gathering#location.country", sort: "maxLength" }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "org.latha.gathering#location.address", sort: "maxLength" }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "org.latha.gathering#location.address", sort: "maxGraphemes" }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "org.latha.gathering#uri.name", sort: "maxGraphemes" }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "org.latha.gathering#uri.name", sort: "maxLength" }

Additional Notes

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

Compare Other Versions

Lexicon Garden

@