org.hypercerts.claim.activity
Schema Diff
+56 -24
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
}