org.hypercerts.claim.activity
Schema Diff
+54 -27
Compatibility Analysis
Breaking Changes Detected
16 breaking changes, 19 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: "union" }
- 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#contributorRole.role", 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#contributorIdentity.identity", sort: "maxLength", value: "1000" }
- ConstraintAdded ConstraintAdded { vertex_id: "org.hypercerts.claim.activity#contributorIdentity.identity", sort: "maxGraphemes", value: "100" }
- ConstraintAdded ConstraintAdded { vertex_id: "org.hypercerts.claim.activity#contributor.contributionWeight", sort: "maxLength", value: "100" }
Non-Breaking Changes (19)
- 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" }
- 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.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.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: "maxGraphemes" }
- ConstraintRemoved ConstraintRemoved { vertex_id: "org.hypercerts.claim.activity#contributorRole", 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" }
- 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" }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" }
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#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#contributorIdentity.identity", sort: "maxLength", value: "1000" }
- ConstraintAdded ConstraintAdded { vertex_id: "org.hypercerts.claim.activity#contributorIdentity.identity", sort: "maxGraphemes", 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:body.description", sort: "maxGraphemes" }
- ConstraintRemoved ConstraintRemoved { vertex_id: "org.hypercerts.claim.activity:body.description", sort: "maxLength" }
- ConstraintRemoved ConstraintRemoved { vertex_id: "org.hypercerts.claim.activity#workScopeString", sort: "maxLength" }
- ConstraintRemoved ConstraintRemoved { vertex_id: "org.hypercerts.claim.activity#workScopeString", 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: "union" }
- 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.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.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
+
"refs": [
67
+
"org.hypercerts.defs#descriptionString",
68
+
"pub.leaflet.pages.linearDocument",
69
+
"com.atproto.repo.strongRef"
70
+
],
71
+
"type": "union",
72
+
"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."
69
73
},
70
74
"contributors": {
71
75
"type": "array",
72
76
"items": {
73
77
"ref": "#contributor",
74
78
"type": "ref"
75
79
},
76
80
"description": "An array of contributor objects, each containing contributor information, weight, and contribution details."
77
81
},
78
82
"shortDescription": {
79
83
"type": "string",
80
84
"maxLength": 3000,
81
85
"description": "Short summary of this activity claim, suitable for previews and list views. Rich text annotations may be provided via `shortDescriptionFacets`.",
82
86
"maxGraphemes": 300
83
87
},
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
-
},
92
88
"shortDescriptionFacets": {
93
89
"type": "array",
94
90
"items": {
95
91
"ref": "app.bsky.richtext.facet",
96
92
"type": "ref"
97
93
},
98
94
"description": "Rich text annotations for `shortDescription` (mentions, URLs, hashtags, etc)."
99
95
}
100
96
}
101
97
},
102
98
"description": "A hypercert record tracking impact work."
103
99
},
104
100
"contributor": {
105
101
"type": "object",
106
102
"required": [
107
103
"contributorIdentity"
108
104
],
109
105
"properties": {
110
106
"contributionWeight": {
111
107
"type": "string",
108
+
"maxLength": 100,
112
109
"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
110
},
114
111
"contributionDetails": {
115
112
"refs": [
116
113
"#contributorRole",
117
114
"com.atproto.repo.strongRef"
118
115
],
119
116
"type": "union",
120
-
"description": "Contribution details as a string via org.hypercerts.claim.activity#contributorRole, or a strong reference to a contribution details record."
117
+
"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
118
},
122
119
"contributorIdentity": {
123
120
"refs": [
124
121
"#contributorIdentity",
125
122
"com.atproto.repo.strongRef"
126
123
],
127
124
"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."
125
+
"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
126
}
130
-
}
127
+
},
128
+
"description": "A contributor to the activity, with identity, weight, and contribution details."
131
129
},
132
130
"contributorRole": {
133
-
"type": "string",
134
-
"maxLength": 10000,
135
-
"description": "Contribution details as a string.",
136
-
"maxGraphemes": 1000
131
+
"type": "object",
132
+
"required": [
133
+
"role"
134
+
],
135
+
"properties": {
136
+
"role": {
137
+
"type": "string",
138
+
"maxLength": 1000,
139
+
"description": "The contribution role or details.",
140
+
"maxGraphemes": 100
141
+
}
142
+
},
143
+
"description": "Contribution details as a string."
137
144
},
138
145
"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
146
+
"type": "object",
147
+
"required": [
148
+
"scope"
149
+
],
150
+
"properties": {
151
+
"scope": {
152
+
"type": "string",
153
+
"maxLength": 1000,
154
+
"description": "The work scope description string.",
155
+
"maxGraphemes": 100
156
+
}
157
+
},
158
+
"description": "A free-form string describing the work scope for simple or legacy scopes."
143
159
},
144
160
"contributorIdentity": {
145
-
"type": "string",
161
+
"type": "object",
162
+
"required": [
163
+
"identity"
164
+
],
165
+
"properties": {
166
+
"identity": {
167
+
"type": "string",
168
+
"maxLength": 1000,
169
+
"description": "The contributor identity string (DID or identifier).",
170
+
"maxGraphemes": 100
171
+
}
172
+
},
146
173
"description": "Contributor information as a string (DID or identifier)."
147
174
}
148
175
},
149
176
"$type": "com.atproto.lexicon.schema",
150
177
"lexicon": 1
151
178
}