org.simocracy.gathering

gainforest.earth

Schema Diff

+88 -0

From

CID
bafyreifec6w43kr...
Indexed At
2026-04-02 17:01 UTC
View this version

To

CID
bafyreieocuy3itj...
Indexed At
2026-08-18 03:00 UTC
View this version

Compatibility Analysis

Backward Compatible

Backward compatible. 34 non-breaking changes.

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

Compare Other Versions

Lexicon Garden

@