Skip to content
Closed
Show file tree
Hide file tree
Changes from 1 commit
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.

49 changes: 0 additions & 49 deletions .changeset/add-signature-support.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