You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: pages/core-concepts/hypercerts-core-data-model.md
+15-17Lines changed: 15 additions & 17 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -5,26 +5,24 @@ description: The data model behind hypercerts — record types, dimensions, and
5
5
6
6
# Core Data Model
7
7
8
-
A hypercert is a collection of linked records that together describe a contribution. This page explains the data model — what records exist, what they contain, and how they connect.
8
+
*Last updated: March 5, 2026*
9
9
10
-
{% callout type="note" %}
11
-
A hypercert is not one record. It's a bundle of records linked by strong references. The activity claim is the anchor; everything else — contributions, attachments, measurements, evaluations — adds context around it.
12
-
{% /callout %}
10
+
A hypercert is an [activity claim](/lexicons/hypercerts-lexicons/activity-claim) with linked records that describe work done. The activity claim is the anchor — contributions, attachments, measurements, and evaluations reference it to add context.
11
+
12
+
This page explains what records exist, what they contain, and how they connect.
13
13
14
14
## The core record: activity claim
15
15
16
16
Every hypercert starts with an **activity claim** — the central record that answers four questions:
17
17
18
18
| Dimension | Question | Example |
19
19
|-----------|----------|---------|
20
-
|**Contributors**| Who is doing (or did) the work? |`did:plc:alice123`, `did:plc:bob456`|
21
-
|**Work scope**| What are they doing (or what did they do)? | "Documentation", "Reforestation" |
22
-
|**Time of work**| When is it happening (or when did it happen)? | 2026-01-01 to 2026-03-31 |
23
-
|**Location**| Where is it taking (or did it take) place? | GeoJSON location data |
24
-
25
-
In addition to these core dimensions, the activity claim can define the rights that come with this claim. The basic right is just "public display", e.g. bragging rights about financial or non-financial contributions to impact. If the hypercert is tokenized, the field can define how the hypercert is allowed to be transferred.
20
+
|**Contributors**| Who is doing (or did) the work? | Alice, Bob |
21
+
|**Work scope**| What are they doing (or what did they do)? | Documentation, Reforestation |
22
+
|**Time of work**| When is it happening (or when did it happen)? | January – March 2026 |
23
+
|**Location**| Where is it taking (or did it take) place? | Coastal Kenya |
26
24
27
-
The activity claim is the core record you create when making a hypercert. It gets a permanent AT-URI like `at://did:plc:alice123/org.hypercerts.claim.activity/3k7`.
25
+
The activity claim gets a permanent AT-URI like `at://did:plc:alice123/org.hypercerts.claim.activity/3k7`.
28
26
29
27
## Additional details
30
28
@@ -41,7 +39,9 @@ Other records link to the activity claim to add context. Again, each is a separa
41
39
42
40
The following diagram shows record types and how they reference the activity claim. Records can be created by different people and live in different repositories.
43
41
44
-
{% figure src="/images/hypercert-erd.png" alt="Hypercert record relationships" /%}
42
+
{% figure src="/images/hypercert-erd.svg" alt="Hypercert record relationships" /%}
43
+
44
+
The diagram includes a **token** entity — tokenization (anchoring a hypercert onchain) is not yet implemented.
45
45
46
46
| Record type | What it adds | Who creates it | Lexicon |
@@ -59,15 +59,15 @@ This means a hypercert grows over time – it is a living record. The core claim
59
59
60
60
## Grouping hypercerts
61
61
62
-
Often hypercerts belong to each other in a project, e.g. in a multi-year project a hypercert might represent the work in one year, such that the full project is a collection of multiple hypercerts.
62
+
Hypercerts can be grouped into **collections**. A multi-year project might have one hypercert per year, with a collection representing the full project. But collections are flexible — anyone can create one for any purpose. Someone might curate a personal collection of hypercerts they find interesting, or an organization might group all their hypercerts together. A hypercert can belong to many collections.
63
63
64
64
| Record type | What it adds | Who creates it | Lexicon |
|**Collection**| Groups activity claims and/or other collections into a project or portfolio. Supports recursive nesting. | E.g. the project organizer |`org.hypercerts.claim.collection`|
67
67
68
68
## How records connect
69
69
70
-
Records reference each other using **strong references** — a combination of AT-URI + CID (content hash). The CID makes the reference tamper-evident: if the referenced record changes, the CID won't match.
70
+
Records reference each other using [strong references](/reference/glossary#strong-reference) — if a referenced record is modified after the reference was created, the change is detectable.
71
71
72
72
```text
73
73
Activity Claim (the core record)
@@ -83,14 +83,12 @@ Activity Claim (the core record)
Every arrow in this tree is a strong reference. Anyone can verify the entire chain by checking CIDs.
87
86
88
87
89
88
## Mutability
90
89
91
-
Activity claims and their linked records are mutable on ATProto by default — authors can update their records as work evolves. Strong references use a CID (content hash) to pin a specific version, so references remain tamper-evident even if the original record is later updated. A full history of edits will be available so that changes are transparent and auditable (work-in-progress).
90
+
Activity claims and their linked records are currently immutable once created. Record versioning and edit history will be supported in a future release, along with the ability to lock a hypercert at a specific version for funding.
92
91
93
-
When a hypercert is ready for funding, it can be locked by anchoring a snapshot onchain. Once locked, the claim cannot change — funders know exactly what they are funding. See [Funding & Value Flow](/core-concepts/funding-and-value-flow) for the full design.
Copy file name to clipboardExpand all lines: pages/getting-started/creating-your-first-hypercert.md
+8-3Lines changed: 8 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -25,7 +25,12 @@ await agent.login({
25
25
26
26
## Create the activity claim
27
27
28
-
The activity claim is the core record — it describes what work was done, when, and in what scope.
28
+
The activity claim is the core record — it describes what work was done, when, and in what scope. Here's how each field maps to the [activity lexicon](/lexicons/hypercerts-lexicons/activity-claim):
29
+
30
+
-**Contributors** can be identified inline with a DID or by referencing a [`contributorInformation`](/lexicons/hypercerts-lexicons/activity-claim) record that includes a display name and image. Each contributor can also have a weight and role.
31
+
-**Work scopes** can be a simple free-form string (`{ scope: "Documentation" }`) or a structured [CEL expression](/core-concepts/work-scopes) for machine-evaluable queries across the network.
32
+
-**Time** is expressed as `startDate` and `endDate` in ISO 8601 format.
33
+
-**Locations** are separate [`app.certified.location`](/lexicons/hypercerts-lexicons/activity-claim) records referenced from the activity claim. They support coordinates, GeoJSON, and other formats.
29
34
30
35
```typescript
31
36
const result =awaitagent.com.atproto.repo.createRecord({
@@ -35,7 +40,7 @@ const result = await agent.com.atproto.repo.createRecord({
shortDescription: "Wrote getting started guides, tutorials, and lexicon reference pages.",
37
42
description: "Created 12 new documentation pages covering quickstart, use cases, evaluations, and architecture. Migrated from GitBook to a custom Next.js + Markdoc site.",
0 commit comments