org.simocracy.gathering

gainforest.earth

Schema Diff

+50 -0

From

CID
bafyreib2yuer6ci...
Indexed At
2026-04-07 00:29 UTC
View this version

To

CID
bafyreiheu3bpiuv...
Indexed At
2026-05-05 11:47 UTC
View this version

Compatibility Analysis

Backward Compatible

Backward compatible. 18 non-breaking changes.

Non-Breaking Changes (18)
  • 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.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.updatedAt" }
  • AddedVertex AddedVertex { vertex_id: "org.simocracy.gathering:body.visibility" }
  • 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.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.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.suggestedInterviewTemplates", tgt: "org.simocracy.gathering:body.suggestedInterviewTemplates:items", kind: "items", name: None }

Migration Guidance

Added Elements

  • 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.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.updatedAt" }
  • AddedVertex { vertex_id: "org.simocracy.gathering:body.visibility" }

Additional Notes

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

Compare Other Versions

Lexicon Garden

@