org.hypercerts.claim.activity

hypercerts.org

Schema Diff

+47 -24

From

CID
bafyreic4txdwd7t...
Indexed At
2026-02-18 19:46 UTC
View this version

To

CID
bafyreibrobw7qwn...
Indexed At
2026-03-19 20:27 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

16 breaking changes, 14 non-breaking changes.

Breaking Changes (16)
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "org.hypercerts.claim.activity#workScopeString", src: "org.hypercerts.claim.activity#workScopeString", tgt: "org.hypercerts.claim.activity#workScopeString.scope", kind: "prop", name: Some("scope") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "org.hypercerts.claim.activity#contributorRole", src: "org.hypercerts.claim.activity#contributorRole", tgt: "org.hypercerts.claim.activity#contributorRole.role", kind: "prop", name: Some("role") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "org.hypercerts.claim.activity#contributorIdentity", src: "org.hypercerts.claim.activity#contributorIdentity", tgt: "org.hypercerts.claim.activity#contributorIdentity.identity", kind: "prop", name: Some("identity") }
  • RemovedVertex RemovedVertex { vertex_id: "org.hypercerts.claim.activity:body.descriptionFacets" }
  • RemovedVertex RemovedVertex { vertex_id: "org.hypercerts.claim.activity:body.descriptionFacets:items" }
  • RemovedEdge RemovedEdge { src: "org.hypercerts.claim.activity:body", tgt: "org.hypercerts.claim.activity:body.descriptionFacets", kind: "prop", name: Some("descriptionFacets") }
  • RemovedEdge RemovedEdge { src: "org.hypercerts.claim.activity:body.descriptionFacets", tgt: "org.hypercerts.claim.activity:body.descriptionFacets:items", kind: "items", name: None }
  • RemovedEdge RemovedEdge { src: "org.hypercerts.claim.activity:body.descriptionFacets:items", tgt: "app.bsky.richtext.facet", kind: "ref", name: None }
  • RemovedEdge RemovedEdge { src: "org.hypercerts.claim.activity:body.workScope", tgt: "org.hypercerts.claim.activity:body.workScope:variant0", kind: "variant", name: Some("com.atproto.repo.strongRef") }
  • RemovedEdge RemovedEdge { src: "org.hypercerts.claim.activity:body.workScope:variant0", tgt: "com.atproto.repo.strongRef", kind: "ref", name: None }
  • KindChanged KindChanged { vertex_id: "org.hypercerts.claim.activity#contributorIdentity", old_kind: "string", new_kind: "object" }
  • KindChanged KindChanged { vertex_id: "org.hypercerts.claim.activity#contributorRole", old_kind: "string", new_kind: "object" }
  • KindChanged KindChanged { vertex_id: "org.hypercerts.claim.activity#workScopeString", old_kind: "string", new_kind: "object" }
  • KindChanged KindChanged { vertex_id: "org.hypercerts.claim.activity:body.description", old_kind: "string", new_kind: "ref" }
  • ConstraintAdded ConstraintAdded { vertex_id: "org.hypercerts.claim.activity:body.description", sort: "ref", value: "pub.leaflet.pages.linearDocument#main" }
  • ConstraintAdded ConstraintAdded { vertex_id: "org.hypercerts.claim.activity#contributor.contributionWeight", sort: "maxLength", value: "100" }
Non-Breaking Changes (14)
  • AddedVertex AddedVertex { vertex_id: "org.hypercerts.claim.activity#contributorIdentity.identity" }
  • AddedVertex AddedVertex { vertex_id: "org.hypercerts.claim.activity#contributorRole.role" }
  • AddedVertex AddedVertex { vertex_id: "org.hypercerts.claim.activity#workScopeString.scope" }
  • AddedVertex AddedVertex { vertex_id: "org.hypercerts.workscope.cel" }
  • AddedVertex AddedVertex { vertex_id: "pub.leaflet.pages.linearDocument#main" }
  • AddedEdge AddedEdge { src: "org.hypercerts.claim.activity:body.description", tgt: "pub.leaflet.pages.linearDocument#main", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "org.hypercerts.claim.activity:body.workScope", tgt: "org.hypercerts.claim.activity:body.workScope:variant0", kind: "variant", name: Some("org.hypercerts.workscope.cel") }
  • AddedEdge AddedEdge { src: "org.hypercerts.claim.activity:body.workScope:variant0", tgt: "org.hypercerts.workscope.cel", kind: "ref", name: None }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "org.hypercerts.claim.activity#workScopeString", sort: "maxLength" }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "org.hypercerts.claim.activity#workScopeString", sort: "maxGraphemes" }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "org.hypercerts.claim.activity:body.description", sort: "maxLength" }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "org.hypercerts.claim.activity:body.description", sort: "maxGraphemes" }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "org.hypercerts.claim.activity#contributorRole", sort: "maxLength" }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "org.hypercerts.claim.activity#contributorRole", sort: "maxGraphemes" }

Migration Guidance

Removed Elements

  • RemovedVertex { vertex_id: "org.hypercerts.claim.activity:body.descriptionFacets" }
  • RemovedVertex { vertex_id: "org.hypercerts.claim.activity:body.descriptionFacets:items" }

Added Elements

  • AddedVertex { vertex_id: "org.hypercerts.claim.activity#contributorIdentity.identity" }
  • AddedVertex { vertex_id: "org.hypercerts.claim.activity#contributorRole.role" }
  • AddedVertex { vertex_id: "org.hypercerts.claim.activity#workScopeString.scope" }
  • AddedVertex { vertex_id: "org.hypercerts.workscope.cel" }
  • AddedVertex { vertex_id: "pub.leaflet.pages.linearDocument#main" }

Constraint Changes

  • ConstraintAdded ConstraintAdded { vertex_id: "org.hypercerts.claim.activity#contributor.contributionWeight", sort: "maxLength", value: "100" }
  • ConstraintAdded ConstraintAdded { vertex_id: "org.hypercerts.claim.activity:body.description", sort: "ref", value: "pub.leaflet.pages.linearDocument#main" }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "org.hypercerts.claim.activity#workScopeString", sort: "maxLength" }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "org.hypercerts.claim.activity#workScopeString", sort: "maxGraphemes" }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "org.hypercerts.claim.activity#contributorRole", sort: "maxLength" }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "org.hypercerts.claim.activity#contributorRole", sort: "maxGraphemes" }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "org.hypercerts.claim.activity:body.description", sort: "maxLength" }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "org.hypercerts.claim.activity:body.description", sort: "maxGraphemes" }

Additional Notes

  • Breaking: RequiredEdgeAdded { vertex_id: "org.hypercerts.claim.activity#workScopeString", src: "org.hypercerts.claim.activity#workScopeString", tgt: "org.hypercerts.claim.activity#workScopeString.scope", kind: "prop", name: Some("scope") }
  • Breaking: RequiredEdgeAdded { vertex_id: "org.hypercerts.claim.activity#contributorRole", src: "org.hypercerts.claim.activity#contributorRole", tgt: "org.hypercerts.claim.activity#contributorRole.role", kind: "prop", name: Some("role") }
  • Breaking: RequiredEdgeAdded { vertex_id: "org.hypercerts.claim.activity#contributorIdentity", src: "org.hypercerts.claim.activity#contributorIdentity", tgt: "org.hypercerts.claim.activity#contributorIdentity.identity", kind: "prop", name: Some("identity") }
  • Breaking: RemovedEdge { src: "org.hypercerts.claim.activity:body", tgt: "org.hypercerts.claim.activity:body.descriptionFacets", kind: "prop", name: Some("descriptionFacets") }
  • Breaking: RemovedEdge { src: "org.hypercerts.claim.activity:body.descriptionFacets", tgt: "org.hypercerts.claim.activity:body.descriptionFacets:items", kind: "items", name: None }
  • Breaking: RemovedEdge { src: "org.hypercerts.claim.activity:body.descriptionFacets:items", tgt: "app.bsky.richtext.facet", kind: "ref", name: None }
  • Breaking: RemovedEdge { src: "org.hypercerts.claim.activity:body.workScope", tgt: "org.hypercerts.claim.activity:body.workScope:variant0", kind: "variant", name: Some("com.atproto.repo.strongRef") }
  • Breaking: RemovedEdge { src: "org.hypercerts.claim.activity:body.workScope:variant0", tgt: "com.atproto.repo.strongRef", kind: "ref", name: None }
  • Breaking: KindChanged { vertex_id: "org.hypercerts.claim.activity#contributorIdentity", old_kind: "string", new_kind: "object" }
  • Breaking: KindChanged { vertex_id: "org.hypercerts.claim.activity#contributorRole", old_kind: "string", new_kind: "object" }
  • Breaking: KindChanged { vertex_id: "org.hypercerts.claim.activity#workScopeString", old_kind: "string", new_kind: "object" }
  • Breaking: KindChanged { vertex_id: "org.hypercerts.claim.activity:body.description", old_kind: "string", new_kind: "ref" }
  • Non-breaking: AddedEdge { src: "org.hypercerts.claim.activity:body.description", tgt: "pub.leaflet.pages.linearDocument#main", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "org.hypercerts.claim.activity:body.workScope", tgt: "org.hypercerts.claim.activity:body.workScope:variant0", kind: "variant", name: Some("org.hypercerts.workscope.cel") }
  • Non-breaking: AddedEdge { src: "org.hypercerts.claim.activity:body.workScope:variant0", tgt: "org.hypercerts.workscope.cel", kind: "ref", name: None }
1 1
{
2 2
  "$type": "com.atproto.lexicon.schema",
3 3
  "defs": {
4 4
    "contributor": {
5 5
      "properties": {
6 6
        "contributionDetails": {
7 -
          "description": "Contribution details as a string via org.hypercerts.claim.activity#contributorRole, or a strong reference to a contribution details record.",
7 +
          "description": "Inline contribution role object with a role string via org.hypercerts.claim.activity#contributorRole, or a strong reference to a contribution details record. The record referenced must conform with the lexicon org.hypercerts.claim.contribution.",
8 8
          "refs": [
9 9
            "#contributorRole",
10 10
            "com.atproto.repo.strongRef"
11 11
          ],
12 12
          "type": "union"
13 13
        },
14 14
        "contributionWeight": {
15 15
          "description": "The relative weight/importance of this contribution (stored as a string to avoid float precision issues). Must be a positive numeric value. Weights do not need to sum to a specific total; normalization can be performed by the consuming application as needed.",
16 +
          "maxLength": 100,
16 17
          "type": "string"
17 18
        },
18 19
        "contributorIdentity": {
19 -
          "description": "Contributor identity as a string (DID or identifier) via org.hypercerts.claim.activity#contributorIdentity, or a strong reference to a contributor information record.",
20 +
          "description": "Inline contributor identity object with an identity string (DID or identifier) via org.hypercerts.claim.activity#contributorIdentity, or a strong reference to a contributor information record. The record referenced must conform with the lexicon org.hypercerts.claim.contributorInformation.",
20 21
          "refs": [
21 22
            "#contributorIdentity",
22 23
            "com.atproto.repo.strongRef"
23 24
          ],
24 25
          "type": "union"
25 26
        }
26 27
      },
27 28
      "required": [
28 29
        "contributorIdentity"
29 30
      ],
30 31
      "type": "object"
31 32
    },
32 33
    "contributorIdentity": {
33 34
      "description": "Contributor information as a string (DID or identifier).",
34 -
      "type": "string"
35 +
      "properties": {
36 +
        "identity": {
37 +
          "description": "The contributor identity string (DID or identifier).",
38 +
          "maxGraphemes": 100,
39 +
          "maxLength": 1000,
40 +
          "type": "string"
41 +
        }
42 +
      },
43 +
      "required": [
44 +
        "identity"
45 +
      ],
46 +
      "type": "object"
35 47
    },
36 48
    "contributorRole": {
37 49
      "description": "Contribution details as a string.",
38 -
      "maxGraphemes": 1000,
39 -
      "maxLength": 10000,
40 -
      "type": "string"
50 +
      "properties": {
51 +
        "role": {
52 +
          "description": "The contribution role or details.",
53 +
          "maxGraphemes": 100,
54 +
          "maxLength": 1000,
55 +
          "type": "string"
56 +
        }
57 +
      },
58 +
      "required": [
59 +
        "role"
60 +
      ],
61 +
      "type": "object"
41 62
    },
42 63
    "main": {
43 64
      "description": "A hypercert record tracking impact work.",
44 65
      "key": "any",
45 66
      "record": {
46 67
        "properties": {
47 68
          "contributors": {
48 69
            "description": "An array of contributor objects, each containing contributor information, weight, and contribution details.",
49 70
            "items": {
50 71
              "ref": "#contributor",
51 72
              "type": "ref"
52 73
            },
74 +
            "maxLength": 1000,
53 75
            "type": "array"
54 76
          },
55 77
          "createdAt": {
56 78
            "description": "Client-declared timestamp when this record was originally created",
57 79
            "format": "datetime",
58 80
            "type": "string"
59 81
          },
60 82
          "description": {
61 -
            "description": "Optional longer description of this activity claim, including context or interpretation. Rich text annotations may be provided via `descriptionFacets`.",
62 -
            "maxGraphemes": 3000,
63 -
            "maxLength": 30000,
64 -
            "type": "string"
65 -
          },
66 -
          "descriptionFacets": {
67 -
            "description": "Rich text annotations for `description` (mentions, URLs, hashtags, etc).",
68 -
            "items": {
69 -
              "ref": "app.bsky.richtext.facet",
70 -
              "type": "ref"
71 -
            },
72 -
            "type": "array"
83 +
            "description": "Rich-text description, represented as a Leaflet linear document.",
84 +
            "ref": "pub.leaflet.pages.linearDocument#main",
85 +
            "type": "ref"
73 86
          },
74 87
          "endDate": {
75 88
            "description": "When the work ended",
76 89
            "format": "datetime",
77 90
            "type": "string"
78 91
          },
79 92
          "image": {
80 93
            "description": "The hypercert visual representation as a URI or image blob.",
81 94
            "refs": [
82 95
              "org.hypercerts.defs#uri",
83 96
              "org.hypercerts.defs#smallImage"
84 97
            ],
85 98
            "type": "union"
86 99
          },
87 100
          "locations": {
88 101
            "description": "An array of strong references to the location where activity was performed. The record referenced must conform with the lexicon app.certified.location.",
89 102
            "items": {
90 103
              "ref": "com.atproto.repo.strongRef",
91 104
              "type": "ref"
92 105
            },
106 +
            "maxLength": 1000,
93 107
            "type": "array"
94 108
          },
95 109
          "rights": {
96 110
            "description": "A strong reference to the rights that this hypercert has. The record referenced must conform with the lexicon org.hypercerts.claim.rights.",
97 111
            "ref": "com.atproto.repo.strongRef",
98 112
            "type": "ref"
99 113
          },
100 114
          "shortDescription": {
101 115
            "description": "Short summary of this activity claim, suitable for previews and list views. Rich text annotations may be provided via `shortDescriptionFacets`.",
102 116
            "maxGraphemes": 300,
103 117
            "maxLength": 3000,
104 118
            "type": "string"
105 119
          },
106 120
          "shortDescriptionFacets": {
107 121
            "description": "Rich text annotations for `shortDescription` (mentions, URLs, hashtags, etc).",
108 122
            "items": {
109 123
              "ref": "app.bsky.richtext.facet",
110 124
              "type": "ref"
111 125
            },
112 126
            "type": "array"
113 127
          },
114 128
          "startDate": {
115 129
            "description": "When the work began",
116 130
            "format": "datetime",
117 131
            "type": "string"
118 132
          },
119 133
          "title": {
120 -
            "description": "Title of the hypercert.",
134 +
            "description": "Display title summarizing the impact work (e.g. 'Reforestation in Amazon Basin 2024')",
121 135
            "maxLength": 256,
122 136
            "type": "string"
123 137
          },
124 138
          "workScope": {
125 -
            "description": "Work scope definition. Either a strongRef to a work-scope logic record (structured, nested logic), or a free-form string for simple or legacy scopes. The work scope record should conform to the org.hypercerts.helper.workScopeTag lexicon.",
139 +
            "description": "Work scope definition. A CEL expression for structured, machine-evaluable scopes or a free-form string for simple and legacy scopes.",
126 140
            "refs": [
127 -
              "com.atproto.repo.strongRef",
141 +
              "org.hypercerts.workscope.cel",
128 142
              "#workScopeString"
129 143
            ],
130 144
            "type": "union"
131 145
          }
132 146
        },
133 147
        "required": [
134 148
          "title",
135 149
          "shortDescription",
136 150
          "createdAt"
137 151
        ],
138 152
        "type": "object"
139 153
      },
140 154
      "type": "record"
141 155
    },
142 156
    "workScopeString": {
143 157
      "description": "A free-form string describing the work scope for simple or legacy scopes.",
144 -
      "maxGraphemes": 1000,
145 -
      "maxLength": 10000,
146 -
      "type": "string"
158 +
      "properties": {
159 +
        "scope": {
160 +
          "description": "The work scope description string.",
161 +
          "maxGraphemes": 100,
162 +
          "maxLength": 1000,
163 +
          "type": "string"
164 +
        }
165 +
      },
166 +
      "required": [
167 +
        "scope"
168 +
      ],
169 +
      "type": "object"
147 170
    }
148 171
  },
149 172
  "id": "org.hypercerts.claim.activity",
150 173
  "lexicon": 1
151 174
}

Compare Other Versions

Lexicon Garden

@