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

Compare Other Versions

Lexicon Garden

@