org.hypercerts.claim.activity

hypercerts.org

Schema Diff

+56 -24

From

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

To

CID
bafyreiavdo7b5xz...
Indexed At
2026-07-26 20:13 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

15 breaking changes, 27 non-breaking changes.

Breaking Changes (15)
  • 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") }
  • 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") }
  • 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: "union" }
  • ConstraintAdded ConstraintAdded { vertex_id: "org.hypercerts.claim.activity#contributor.contributionWeight", sort: "maxLength", value: "100" }
Non-Breaking Changes (27)
  • AddedVertex AddedVertex { vertex_id: "app.certified.signature.defs#list" }
  • 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.claim.activity:body.description:variant0" }
  • AddedVertex AddedVertex { vertex_id: "org.hypercerts.claim.activity:body.description:variant1" }
  • AddedVertex AddedVertex { vertex_id: "org.hypercerts.claim.activity:body.description:variant2" }
  • AddedVertex AddedVertex { vertex_id: "org.hypercerts.claim.activity:body.signatures" }
  • AddedVertex AddedVertex { vertex_id: "org.hypercerts.defs#descriptionString" }
  • AddedVertex AddedVertex { vertex_id: "org.hypercerts.workscope.cel" }
  • AddedVertex AddedVertex { vertex_id: "pub.leaflet.pages.linearDocument" }
  • AddedEdge AddedEdge { src: "org.hypercerts.claim.activity:body", tgt: "org.hypercerts.claim.activity:body.signatures", kind: "prop", name: Some("signatures") }
  • AddedEdge AddedEdge { src: "org.hypercerts.claim.activity:body.description", tgt: "org.hypercerts.claim.activity:body.description:variant0", kind: "variant", name: Some("org.hypercerts.defs#descriptionString") }
  • AddedEdge AddedEdge { src: "org.hypercerts.claim.activity:body.description", tgt: "org.hypercerts.claim.activity:body.description:variant1", kind: "variant", name: Some("pub.leaflet.pages.linearDocument") }
  • AddedEdge AddedEdge { src: "org.hypercerts.claim.activity:body.description", tgt: "org.hypercerts.claim.activity:body.description:variant2", kind: "variant", name: Some("com.atproto.repo.strongRef") }
  • AddedEdge AddedEdge { src: "org.hypercerts.claim.activity:body.description:variant0", tgt: "org.hypercerts.defs#descriptionString", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "org.hypercerts.claim.activity:body.description:variant1", tgt: "pub.leaflet.pages.linearDocument", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "org.hypercerts.claim.activity:body.description:variant2", tgt: "com.atproto.repo.strongRef", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "org.hypercerts.claim.activity:body.signatures", tgt: "app.certified.signature.defs#list", 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#contributorRole", sort: "maxLength" }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "org.hypercerts.claim.activity#contributorRole", sort: "maxGraphemes" }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "org.hypercerts.claim.activity#workScopeString", sort: "maxGraphemes" }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "org.hypercerts.claim.activity#workScopeString", sort: "maxLength" }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "org.hypercerts.claim.activity:body.description", sort: "maxGraphemes" }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "org.hypercerts.claim.activity:body.description", 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: "app.certified.signature.defs#list" }
  • 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.claim.activity:body.description:variant0" }
  • AddedVertex { vertex_id: "org.hypercerts.claim.activity:body.description:variant1" }
  • AddedVertex { vertex_id: "org.hypercerts.claim.activity:body.description:variant2" }
  • AddedVertex { vertex_id: "org.hypercerts.claim.activity:body.signatures" }
  • AddedVertex { vertex_id: "org.hypercerts.defs#descriptionString" }
  • AddedVertex { vertex_id: "org.hypercerts.workscope.cel" }
  • AddedVertex { vertex_id: "pub.leaflet.pages.linearDocument" }

Constraint Changes

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

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

Compare Other Versions

Lexicon Garden

@