org.hypercerts.claim.activity
Schema Diff
+16 -7
Compatibility Analysis
Breaking Changes Detected
3 breaking changes, 18 non-breaking changes.
Breaking Changes (3)
- RemovedVertex RemovedVertex { vertex_id: "pub.leaflet.pages.linearDocument#main" }
- RemovedEdge RemovedEdge { src: "org.hypercerts.claim.activity:body.description", tgt: "pub.leaflet.pages.linearDocument#main", kind: "ref", name: None }
- KindChanged KindChanged { vertex_id: "org.hypercerts.claim.activity:body.description", old_kind: "ref", new_kind: "union" }
Non-Breaking Changes (18)
- AddedVertex AddedVertex { vertex_id: "app.certified.signature.defs#list" }
- 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: "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 }
- ConstraintRelaxed ConstraintRelaxed { vertex_id: "org.hypercerts.claim.activity#workScopeString.scope", sort: "maxLength", old_value: "1000", new_value: "10000" }
- ConstraintRelaxed ConstraintRelaxed { vertex_id: "org.hypercerts.claim.activity#workScopeString.scope", sort: "maxGraphemes", old_value: "100", new_value: "1000" }
- ConstraintRemoved ConstraintRemoved { vertex_id: "org.hypercerts.claim.activity:body.description", sort: "ref" }
Migration Guidance
Removed Elements
RemovedVertex { vertex_id: "pub.leaflet.pages.linearDocument#main" }
Added Elements
AddedVertex { vertex_id: "app.certified.signature.defs#list" }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: "pub.leaflet.pages.linearDocument" }
Constraint Changes
- ConstraintRemoved ConstraintRemoved { vertex_id: "org.hypercerts.claim.activity:body.description", sort: "ref" }
- ConstraintRelaxed ConstraintRelaxed { vertex_id: "org.hypercerts.claim.activity#workScopeString.scope", sort: "maxGraphemes", old_value: "100", new_value: "1000" }
- ConstraintRelaxed ConstraintRelaxed { vertex_id: "org.hypercerts.claim.activity#workScopeString.scope", sort: "maxLength", old_value: "1000", new_value: "10000" }
Additional Notes
- Breaking: RemovedEdge { src: "org.hypercerts.claim.activity:body.description", tgt: "pub.leaflet.pages.linearDocument#main", kind: "ref", name: None }
- Breaking: KindChanged { vertex_id: "org.hypercerts.claim.activity:body.description", old_kind: "ref", 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 }
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
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
49
"maxLength": 1000,
50
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."
51
51
},
52
52
"startDate": {
53
53
"type": "string",
54
54
"format": "datetime",
55
55
"description": "When the work began"
56
56
},
57
57
"workScope": {
58
58
"refs": [
59
59
"org.hypercerts.workscope.cel",
60
60
"#workScopeString"
61
61
],
62
62
"type": "union",
63
63
"description": "Work scope definition. A CEL expression for structured, machine-evaluable scopes or a free-form string for simple and legacy scopes."
64
64
},
65
-
"description": {
66
-
"ref": "pub.leaflet.pages.linearDocument#main",
65
+
"signatures": {
66
+
"ref": "app.certified.signature.defs#list",
67
67
"type": "ref",
68
-
"description": "Rich-text description, represented as a Leaflet linear document."
68
+
"description": "Optional cryptographic signatures attesting to this record's content."
69
69
},
70
+
"description": {
71
+
"refs": [
72
+
"org.hypercerts.defs#descriptionString",
73
+
"pub.leaflet.pages.linearDocument",
74
+
"com.atproto.repo.strongRef"
75
+
],
76
+
"type": "union",
77
+
"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."
78
+
},
70
79
"contributors": {
71
80
"type": "array",
72
81
"items": {
73
82
"ref": "#contributor",
74
83
"type": "ref"
75
84
},
76
-
"maxLength": 1000,
77
85
"description": "An array of contributor objects, each containing contributor information, weight, and contribution details."
78
86
},
79
87
"shortDescription": {
80
88
"type": "string",
81
89
"maxLength": 3000,
82
90
"description": "Short summary of this activity claim, suitable for previews and list views. Rich text annotations may be provided via `shortDescriptionFacets`.",
83
91
"maxGraphemes": 300
84
92
},
85
93
"shortDescriptionFacets": {
86
94
"type": "array",
87
95
"items": {
88
96
"ref": "app.bsky.richtext.facet",
89
97
"type": "ref"
90
98
},
91
99
"description": "Rich text annotations for `shortDescription` (mentions, URLs, hashtags, etc)."
92
100
}
93
101
}
94
102
},
95
103
"description": "A hypercert record tracking impact work."
96
104
},
97
105
"contributor": {
98
106
"type": "object",
99
107
"required": [
100
108
"contributorIdentity"
101
109
],
102
110
"properties": {
103
111
"contributionWeight": {
104
112
"type": "string",
105
113
"maxLength": 100,
106
114
"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."
107
115
},
108
116
"contributionDetails": {
109
117
"refs": [
110
118
"#contributorRole",
111
119
"com.atproto.repo.strongRef"
112
120
],
113
121
"type": "union",
114
122
"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."
115
123
},
116
124
"contributorIdentity": {
117
125
"refs": [
118
126
"#contributorIdentity",
119
127
"com.atproto.repo.strongRef"
120
128
],
121
129
"type": "union",
122
130
"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."
123
131
}
124
-
}
132
+
},
133
+
"description": "A contributor to the activity, with identity, weight, and contribution details."
125
134
},
126
135
"contributorRole": {
127
136
"type": "object",
128
137
"required": [
129
138
"role"
130
139
],
131
140
"properties": {
132
141
"role": {
133
142
"type": "string",
134
143
"maxLength": 1000,
135
144
"description": "The contribution role or details.",
136
145
"maxGraphemes": 100
137
146
}
138
147
},
139
148
"description": "Contribution details as a string."
140
149
},
141
150
"workScopeString": {
142
151
"type": "object",
143
152
"required": [
144
153
"scope"
145
154
],
146
155
"properties": {
147
156
"scope": {
148
157
"type": "string",
149
-
"maxLength": 1000,
158
+
"maxLength": 10000,
150
159
"description": "The work scope description string.",
151
-
"maxGraphemes": 100
160
+
"maxGraphemes": 1000
152
161
}
153
162
},
154
163
"description": "A free-form string describing the work scope for simple or legacy scopes."
155
164
},
156
165
"contributorIdentity": {
157
166
"type": "object",
158
167
"required": [
159
168
"identity"
160
169
],
161
170
"properties": {
162
171
"identity": {
163
172
"type": "string",
164
173
"maxLength": 1000,
165
174
"description": "The contributor identity string (DID or identifier).",
166
175
"maxGraphemes": 100
167
176
}
168
177
},
169
178
"description": "Contributor information as a string (DID or identifier)."
170
179
}
171
180
},
172
181
"$type": "com.atproto.lexicon.schema",
173
182
"lexicon": 1
174
183
}