org.latha.gathering
{
"$type": "com.atproto.lexicon.schema",
"defs": {
"actorRef": {
"description": "A lightweight reference to an ATProto identity.",
"properties": {
"did": {
"description": "ATProto DID.",
"format": "did",
"type": "string"
},
"handle": {
"description": "Current ATProto handle.",
"type": "string"
}
},
"required": [
"did"
],
"type": "object"
},
"alignment": {
"description": "A mapping between a framework principle and an observed feature, with strength rating.",
"properties": {
"feature": {
"description": "The observed feature (e.g., self-authenticating data, interoperable apps).",
"maxGraphemes": 200,
"maxLength": 2000,
"type": "string"
},
"principle": {
"description": "The framework principle (e.g., user sovereignty, anti-monopoly).",
"maxGraphemes": 100,
"maxLength": 1000,
"type": "string"
},
"strength": {
"description": "Alignment strength.",
"knownValues": [
"org.latha.gathering#strong",
"org.latha.gathering#moderate",
"org.latha.gathering#emerging",
"org.latha.gathering#none"
],
"type": "string"
}
},
"required": [
"principle",
"feature"
],
"type": "object"
},
"attendee": {
"description": "A rich attendee record with role, projects, and metadata. Fills the gap left by community.lexicon.calendar.rsvp (which has no role field).",
"properties": {
"bio": {
"description": "Short bio or tagline.",
"maxGraphemes": 500,
"maxLength": 5000,
"type": "string"
},
"did": {
"description": "ATProto DID.",
"format": "did",
"type": "string"
},
"displayName": {
"description": "Display name.",
"maxGraphemes": 100,
"maxLength": 1000,
"type": "string"
},
"handle": {
"description": "ATProto handle.",
"type": "string"
},
"notes": {
"description": "Researcher notes about this attendee.",
"maxGraphemes": 1000,
"maxLength": 10000,
"type": "string"
},
"projects": {
"description": "Projects this person builds or maintains.",
"items": {
"ref": "org.latha.gathering#projectRef",
"type": "ref"
},
"type": "array"
},
"role": {
"description": "Role in the gathering: host, organizer, participant, speaker, volunteer.",
"ref": "org.latha.gathering#role",
"type": "ref"
},
"tags": {
"description": "Interest tags (a11y, privacy, transit, category-theory, etc.).",
"items": {
"maxLength": 640,
"type": "string"
},
"type": "array"
}
},
"required": [
"did"
],
"type": "object"
},
"cancelled": {
"description": "Gathering has been cancelled.",
"type": "token"
},
"connection": {
"description": "A typed relationship between two actors. DID-based, unlike network.cosmik.connection which is URL-based.",
"properties": {
"description": {
"description": "Why this connection matters.",
"maxGraphemes": 500,
"maxLength": 5000,
"type": "string"
},
"source": {
"description": "Source person.",
"ref": "org.latha.gathering#actorRef",
"type": "ref"
},
"target": {
"description": "Target person.",
"ref": "org.latha.gathering#actorRef",
"type": "ref"
},
"type": {
"description": "Relationship type (e.g., conviviality-alignment, civic-infrastructure, shared-practice).",
"maxLength": 500,
"type": "string"
}
},
"required": [
"source",
"target",
"type"
],
"type": "object"
},
"convergenceAssessment": {
"description": "Assessment of the gathering's alignment with a theoretical framework (degrowth, conviviality, commons, etc.).",
"properties": {
"alignments": {
"description": "Principle-to-feature alignment records.",
"items": {
"ref": "org.latha.gathering#alignment",
"type": "ref"
},
"type": "array"
},
"framework": {
"description": "The framework being assessed (e.g., degrowth, conviviality, commons, permacomputing).",
"maxGraphemes": 100,
"maxLength": 1000,
"type": "string"
},
"gaps": {
"description": "Where the gathering or network falls short of the framework.",
"maxGraphemes": 2000,
"maxLength": 20000,
"type": "string"
},
"overallAlignment": {
"description": "Summary assessment of overall alignment.",
"maxGraphemes": 500,
"maxLength": 5000,
"type": "string"
}
},
"required": [
"framework"
],
"type": "object"
},
"emerging": {
"description": "Emerging alignment.",
"type": "token"
},
"host": {
"description": "Host of the gathering.",
"type": "token"
},
"hybrid": {
"description": "Hybrid (in-person and virtual) gathering.",
"type": "token"
},
"infraLayer": {
"description": "A named infrastructure layer with responsible parties.",
"properties": {
"description": {
"description": "What this layer provides.",
"maxGraphemes": 500,
"maxLength": 5000,
"type": "string"
},
"name": {
"description": "Layer name (e.g., Physical infrastructure, Protocol infrastructure).",
"maxGraphemes": 100,
"maxLength": 1000,
"type": "string"
},
"responsible": {
"description": "People or identities responsible for this layer.",
"items": {
"ref": "org.latha.gathering#actorRef",
"type": "ref"
},
"type": "array"
}
},
"required": [
"name"
],
"type": "object"
},
"infrastructureMap": {
"description": "A map of social and technical infrastructure layers present at the gathering.",
"properties": {
"layers": {
"description": "Named infrastructure layers with responsible parties.",
"items": {
"ref": "org.latha.gathering#infraLayer",
"type": "ref"
},
"type": "array"
}
},
"type": "object"
},
"inperson": {
"description": "In-person gathering.",
"type": "token"
},
"location": {
"description": "A physical location. Mirrors community.lexicon.location.address fields.",
"properties": {
"address": {
"description": "Street address.",
"maxGraphemes": 200,
"maxLength": 2000,
"type": "string"
},
"country": {
"description": "ISO 3166-1 alpha-2 country code.",
"maxLength": 2,
"type": "string"
},
"locality": {
"description": "City or locality.",
"maxGraphemes": 50,
"maxLength": 500,
"type": "string"
},
"name": {
"description": "Venue name.",
"maxGraphemes": 100,
"maxLength": 1000,
"type": "string"
},
"postalCode": {
"description": "Postal code.",
"maxLength": 20,
"type": "string"
},
"region": {
"description": "State or province.",
"maxGraphemes": 50,
"maxLength": 500,
"type": "string"
}
},
"type": "object"
},
"main": {
"description": "A community gathering or meetup with structured attendee data and extensible analysis sections.",
"key": "tid",
"record": {
"properties": {
"attendees": {
"description": "People who attended the gathering, with roles and metadata.",
"items": {
"ref": "org.latha.gathering#attendee",
"type": "ref"
},
"type": "array"
},
"createdAt": {
"description": "Client-declared timestamp when this record was created.",
"format": "datetime",
"type": "string"
},
"description": {
"description": "Brief description of the gathering.",
"maxGraphemes": 2000,
"maxLength": 20000,
"type": "string"
},
"endsAt": {
"description": "Client-declared timestamp when the gathering ends.",
"format": "datetime",
"type": "string"
},
"format": {
"description": "Gathering format (e.g., unconference, workshop, hackathon, panel).",
"maxGraphemes": 100,
"maxLength": 1000,
"type": "string"
},
"host": {
"description": "The primary host or organizing identity.",
"ref": "org.latha.gathering#actorRef",
"type": "ref"
},
"locations": {
"description": "Where the gathering takes place.",
"items": {
"ref": "org.latha.gathering#location",
"type": "ref"
},
"type": "array"
},
"mode": {
"description": "The attendance mode of the gathering.",
"ref": "org.latha.gathering#mode",
"type": "ref"
},
"name": {
"description": "Name of the gathering.",
"maxGraphemes": 200,
"maxLength": 2000,
"type": "string"
},
"sections": {
"description": "Open union of modular analysis sections. Each entry must specify a $type. Built-in section types: thematicCluster, networkAnalysis, convergenceAssessment, infrastructureMap. Other lexicons may add additional section types.",
"items": {
"closed": false,
"refs": [
"org.latha.gathering#thematicCluster",
"org.latha.gathering#networkAnalysis",
"org.latha.gathering#convergenceAssessment",
"org.latha.gathering#infrastructureMap"
],
"type": "union"
},
"type": "array"
},
"startsAt": {
"description": "Client-declared timestamp when the gathering starts.",
"format": "datetime",
"type": "string"
},
"status": {
"description": "The status of the gathering.",
"ref": "org.latha.gathering#status",
"type": "ref"
},
"uris": {
"description": "Platform links (OpenMeet, Meetup.com, etc.).",
"items": {
"ref": "org.latha.gathering#uri",
"type": "ref"
},
"type": "array"
}
},
"required": [
"name",
"createdAt"
],
"type": "object"
},
"type": "record"
},
"mode": {
"description": "Attendance mode of the gathering.",
"knownValues": [
"org.latha.gathering#inperson",
"org.latha.gathering#hybrid",
"org.latha.gathering#virtual"
],
"type": "string"
},
"moderate": {
"description": "Moderate alignment.",
"type": "token"
},
"networkAnalysis": {
"description": "Structured analysis of connections between attendees and projects.",
"properties": {
"connections": {
"description": "Typed relationships between attendees.",
"items": {
"ref": "org.latha.gathering#connection",
"type": "ref"
},
"type": "array"
},
"keyInsights": {
"description": "What the network structure reveals.",
"items": {
"maxGraphemes": 500,
"maxLength": 5000,
"type": "string"
},
"type": "array"
}
},
"type": "object"
},
"none": {
"description": "No alignment.",
"type": "token"
},
"organizer": {
"description": "Organizer of the gathering.",
"type": "token"
},
"participant": {
"description": "Participant in the gathering.",
"type": "token"
},
"planned": {
"description": "Gathering is planned.",
"type": "token"
},
"postponed": {
"description": "Gathering has been postponed.",
"type": "token"
},
"projectRef": {
"description": "A reference to a project or tool.",
"properties": {
"name": {
"description": "Project name.",
"maxGraphemes": 100,
"maxLength": 1000,
"type": "string"
},
"uri": {
"description": "Link to the project.",
"format": "uri",
"type": "string"
}
},
"required": [
"name"
],
"type": "object"
},
"rescheduled": {
"description": "Gathering has been rescheduled.",
"type": "token"
},
"role": {
"description": "Role of an attendee in the gathering.",
"knownValues": [
"org.latha.gathering#host",
"org.latha.gathering#organizer",
"org.latha.gathering#participant",
"org.latha.gathering#speaker",
"org.latha.gathering#volunteer"
],
"type": "string"
},
"scheduled": {
"description": "Gathering is scheduled.",
"type": "token"
},
"speaker": {
"description": "Speaker at the gathering.",
"type": "token"
},
"status": {
"description": "Status of the gathering.",
"knownValues": [
"org.latha.gathering#planned",
"org.latha.gathering#scheduled",
"org.latha.gathering#rescheduled",
"org.latha.gathering#postponed",
"org.latha.gathering#cancelled"
],
"type": "string"
},
"strong": {
"description": "Strong alignment.",
"type": "token"
},
"thematicCluster": {
"description": "A group of attendees united by a shared theme or practice.",
"properties": {
"description": {
"description": "What unites this cluster.",
"maxGraphemes": 1000,
"maxLength": 10000,
"type": "string"
},
"members": {
"description": "DIDs and handles of cluster members.",
"items": {
"ref": "org.latha.gathering#actorRef",
"type": "ref"
},
"type": "array"
},
"name": {
"description": "Cluster name (e.g., Organizer Core, Technologist-Philosophers).",
"maxGraphemes": 100,
"maxLength": 1000,
"type": "string"
}
},
"required": [
"name"
],
"type": "object"
},
"uri": {
"description": "A named URI. Mirrors community.lexicon.calendar.event#uri.",
"properties": {
"name": {
"description": "Label for the URI.",
"maxGraphemes": 50,
"maxLength": 500,
"type": "string"
},
"uri": {
"description": "The URI.",
"format": "uri",
"type": "string"
}
},
"required": [
"uri"
],
"type": "object"
},
"virtual": {
"description": "Virtual gathering.",
"type": "token"
},
"volunteer": {
"description": "Volunteer at the gathering.",
"type": "token"
}
},
"description": "A community gathering or meetup record with attendees, analysis sections, and framework convergence assessments. Self-contained record covering event metadata, rich attendee data, and extensible modular analysis.",
"id": "org.latha.gathering",
"lexicon": 1
}
Metadata
- DID
-
did:plc:ngokl2gnmpbvuvrfckja3g7p - CID
-
bafyreibmlbvifmeb6jw6fpbmci7snhmodn3526d33wxdqjudsa7c7hl2vm - Indexed At
- 2026-04-25 20:35 UTC
- AT-URI
-
at://did:plc:ngokl2gnmpbvuvrfckja3g7p/com.atproto.lexicon.schema/org.latha.gathering
Version History (3 versions)
Similar Lexicons
Lexicons whose schemas describe something close to this one. Check them before publishing a new one that overlaps.
-
A local in-person collector meetup, mirrored to AT Protocol so meetups are discoverable across instances. RSVPs are separate org.swappulse.meetupRsvp records referencing this meetup via strongRef.
-
tech.devrelish.group record
A recurring meetup group with a persistent identity.
-
tech.devrelish.event.meta record
Extended metadata for a community.lexicon.calendar.event record, adding group affiliation, capacity, speakers, and sessions.
-
An attendee's RSVP for a meetup, mirrored to AT Protocol as a real org.swappulse.meetupRsvp record. References the meetup via strongRef so RSVPs are portable and verifiable across instances.