org.hypercerts.claim.activity

hypercerts.org

Schema Diff

+49 -26

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, 13 non-breaking changes.

Breaking Changes (16)
  • 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.workScope", tgt: "org.hypercerts.claim.activity:body.workScope:variant0", kind: "variant", name: Some("com.atproto.repo.strongRef") }
  • 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#contributor.contributionWeight", sort: "maxLength", value: "100" }
  • ConstraintAdded ConstraintAdded { vertex_id: "org.hypercerts.claim.activity#contributorRole.role", sort: "maxLength", value: "1000" }
  • ConstraintAdded ConstraintAdded { vertex_id: "org.hypercerts.claim.activity#contributorRole.role", sort: "maxGraphemes", value: "100" }
  • ConstraintAdded ConstraintAdded { vertex_id: "org.hypercerts.claim.activity#workScopeString.scope", sort: "maxGraphemes", value: "100" }
  • ConstraintAdded ConstraintAdded { vertex_id: "org.hypercerts.claim.activity#workScopeString.scope", sort: "maxLength", value: "1000" }
  • ConstraintAdded ConstraintAdded { vertex_id: "org.hypercerts.claim.activity#contributorIdentity.identity", sort: "maxLength", value: "1000" }
  • ConstraintAdded ConstraintAdded { vertex_id: "org.hypercerts.claim.activity#contributorIdentity.identity", sort: "maxGraphemes", value: "100" }
Non-Breaking Changes (13)
  • 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" }
  • AddedEdge AddedEdge { src: "org.hypercerts.claim.activity#contributorIdentity", tgt: "org.hypercerts.claim.activity#contributorIdentity.identity", kind: "prop", name: Some("identity") }
  • AddedEdge AddedEdge { src: "org.hypercerts.claim.activity#contributorRole", tgt: "org.hypercerts.claim.activity#contributorRole.role", kind: "prop", name: Some("role") }
  • AddedEdge AddedEdge { src: "org.hypercerts.claim.activity#workScopeString", tgt: "org.hypercerts.claim.activity#workScopeString.scope", kind: "prop", name: Some("scope") }
  • 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") }
  • 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" }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "org.hypercerts.claim.activity#workScopeString", sort: "maxGraphemes" }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "org.hypercerts.claim.activity#workScopeString", sort: "maxLength" }

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" }

Constraint Changes

  • ConstraintAdded ConstraintAdded { vertex_id: "org.hypercerts.claim.activity#workScopeString.scope", sort: "maxLength", value: "1000" }
  • ConstraintAdded ConstraintAdded { vertex_id: "org.hypercerts.claim.activity#workScopeString.scope", sort: "maxGraphemes", value: "100" }
  • ConstraintAdded ConstraintAdded { vertex_id: "org.hypercerts.claim.activity#contributorRole.role", sort: "maxLength", value: "1000" }
  • ConstraintAdded ConstraintAdded { vertex_id: "org.hypercerts.claim.activity#contributorRole.role", sort: "maxGraphemes", value: "100" }
  • ConstraintAdded ConstraintAdded { vertex_id: "org.hypercerts.claim.activity#contributorIdentity.identity", sort: "maxGraphemes", value: "100" }
  • ConstraintAdded ConstraintAdded { vertex_id: "org.hypercerts.claim.activity#contributorIdentity.identity", sort: "maxLength", value: "1000" }
  • ConstraintAdded ConstraintAdded { vertex_id: "org.hypercerts.claim.activity#contributor.contributionWeight", sort: "maxLength", value: "100" }
  • 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#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" }

Additional Notes

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

Compare Other Versions

Lexicon Garden

@