Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 0 additions & 5 deletions .changeset/add-graph-follow-lexicon.md

This file was deleted.

5 changes: 0 additions & 5 deletions .changeset/clarify-knownvalues-open-vocabulary.md

This file was deleted.

53 changes: 53 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,58 @@
# @hypercerts-org/lexicon

## 0.13.0

### Minor Changes

- [#209](https://github.com/hypercerts-org/hypercerts-lexicon/pull/209) [`8ec051f`](https://github.com/hypercerts-org/hypercerts-lexicon/commit/8ec051faaf46b507409d97ca609b05fb8f318a3d) Thanks [@s-adamantine](https://github.com/s-adamantine)! - Add `app.certified.graph.follow` lexicon — a social-graph follow record schema-compatible with `app.bsky.graph.follow` (same `tid` key, same `subject` / `createdAt` / optional `via` strongRef fields). Exports new `GRAPH_FOLLOW_NSID`, `GRAPH_FOLLOW_LEXICON_JSON`, `GRAPH_FOLLOW_LEXICON_DOC`, and `AppCertifiedGraphFollow` type namespace.

- [#170](https://github.com/hypercerts-org/hypercerts-lexicon/pull/170) [`97981bd`](https://github.com/hypercerts-org/hypercerts-lexicon/commit/97981bd1d321cb6147c01039103984eb297ebb08) Thanks [@satyam-mishra-pce](https://github.com/satyam-mishra-pce)! - Add cryptographic signature support to all lexicons

Adds optional cryptographic signature support to all record lexicons, enabling platform attestation and verification that records were created through trusted services. The on-the-wire shape, signing procedure, and verification procedure all conform to Nick Gerakines' [ATProtocol Attestation Specification](https://tangled.org/strings/did:plc:cbkjy5n7bk3ax2wplmtjofq2/3m3fy2xuahc22) (see also the [accompanying blog post](https://ngerakines.leaflet.pub/3m3idxul5hc2r)).

**New lexicons:**
- `app.certified.signature.defs` - Shared type definitions for signatures. Provides:
- `#list` - open union array of inline signatures and `com.atproto.repo.strongRef` references to remote proofs
- `#inline` - inline signature object with two required fields: `signature` (ECDSA bytes, low-S per BIP-0062, signing the record's CID) and `key` (DID verification method reference). The signing curve is determined by the multicodec prefix on the verification method's `publicKeyMultibase`, so no separate algorithm-tag field is carried on the signature itself.
- `app.certified.signature.proof` - Remote attestation proof record containing the CID of the attested content (computed with the spec's `$sig`-repository binding).

**Changes to existing lexicons:**

All 21 record lexicons now include an optional `signatures` property (a ref to `app.certified.signature.defs#list`) placed directly on the record with no wrapper object:
- `org.hypercerts.claim.activity`
- `org.hypercerts.claim.contribution`
- `org.hypercerts.claim.contributorInformation`
- `org.hypercerts.claim.rights`
- `org.hypercerts.collection`
- `org.hypercerts.context.acknowledgement`
- `org.hypercerts.context.attachment`
- `org.hypercerts.context.evaluation`
- `org.hypercerts.context.measurement`
- `org.hypercerts.funding.receipt`
- `org.hypercerts.workscope.tag`
- `org.hyperboards.board`
- `org.hyperboards.displayProfile`
- `app.certified.badge.award`
- `app.certified.badge.definition`
- `app.certified.badge.response`
- `app.certified.actor.profile`
- `app.certified.actor.organization`
- `app.certified.location`
- `app.certified.graph.follow`
- `app.certified.link.evm`

Note on `app.certified.link.evm`: this record carries two orthogonal integrity primitives. The EIP-712 `proof` field proves wallet consent (the EVM key holder agreed to be linked to the DID). The `signatures` array proves record provenance (e.g. that a platform UI minted the record, defending against replay of harvested EIP-712 signatures). Both are useful and they do not conflict.

**Design notes:**

This is a non-breaking extension - signatures are optional on all records. Two signature patterns are supported:
1. **Inline signatures** - Embedded directly in the record via `app.certified.signature.defs#inline`.
2. **Remote attestations** - References to proof records in other repositories via `com.atproto.repo.strongRef`.

### Patch Changes

- [#213](https://github.com/hypercerts-org/hypercerts-lexicon/pull/213) [`80e5b42`](https://github.com/hypercerts-org/hypercerts-lexicon/commit/80e5b427b1e6886417d2db12017e7aa4a42a6482) Thanks [@s-adamantine](https://github.com/s-adamantine)! - Clarify that `knownValues` is an open vocabulary, not a closed enum. Adds a "Schema Conventions" section to README.md explaining that custom string values are permitted on any `knownValues` field (and contrasting with `enum`, which is closed and validator-enforced). Updates inline descriptions on `app.certified.location#locationType`, `org.hypercerts.workscope.tag#category`, and `org.hypercerts.workscope.tag#status` to explicitly note that values beyond the listed set are permitted — bringing them in line with the existing wording on `org.hypercerts.collection#type`, `org.hypercerts.context.attachment#contentType`, and `app.certified.badge.definition#badgeType`. The `locationType` description now also explicitly calls out that polygons / multipolygons / featurecollections use the catch-all `geojson` entry rather than a typed variant. Fixes a misleading line in STRING_CONSTRAINTS.md that conflated `knownValues` with `enum`. Documentation-only — no schema or type changes.

## 0.12.0

### Minor Changes
Expand Down
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@hypercerts-org/lexicon",
"version": "0.12.0",
"version": "0.13.0",
"description": "ATProto lexicon definitions and TypeScript types for the Hypercerts protocol",
"type": "module",
"main": "./dist/index.cjs",
Expand Down