From 43119ab0bd5e478f55930b9b490932af7c87e3b9 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 21 May 2026 16:58:58 +0000 Subject: [PATCH] Release --- .changeset/add-graph-follow-lexicon.md | 5 -- .changeset/add-signature-support.md | 49 ----------------- .../clarify-knownvalues-open-vocabulary.md | 5 -- CHANGELOG.md | 53 +++++++++++++++++++ package-lock.json | 4 +- package.json | 2 +- 6 files changed, 56 insertions(+), 62 deletions(-) delete mode 100644 .changeset/add-graph-follow-lexicon.md delete mode 100644 .changeset/add-signature-support.md delete mode 100644 .changeset/clarify-knownvalues-open-vocabulary.md diff --git a/.changeset/add-graph-follow-lexicon.md b/.changeset/add-graph-follow-lexicon.md deleted file mode 100644 index 5f86d742..00000000 --- a/.changeset/add-graph-follow-lexicon.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@hypercerts-org/lexicon": minor ---- - -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. diff --git a/.changeset/add-signature-support.md b/.changeset/add-signature-support.md deleted file mode 100644 index a8c615eb..00000000 --- a/.changeset/add-signature-support.md +++ /dev/null @@ -1,49 +0,0 @@ ---- -"@hypercerts-org/lexicon": minor ---- - -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`. diff --git a/.changeset/clarify-knownvalues-open-vocabulary.md b/.changeset/clarify-knownvalues-open-vocabulary.md deleted file mode 100644 index 8ebb5d8e..00000000 --- a/.changeset/clarify-knownvalues-open-vocabulary.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@hypercerts-org/lexicon": patch ---- - -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. diff --git a/CHANGELOG.md b/CHANGELOG.md index e24bd3b4..958ceaca 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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 diff --git a/package-lock.json b/package-lock.json index 42dd41eb..e59123e0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@hypercerts-org/lexicon", - "version": "0.12.0", + "version": "0.13.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@hypercerts-org/lexicon", - "version": "0.12.0", + "version": "0.13.0", "license": "MIT", "dependencies": { "@atproto/lexicon": "^0.6.0", diff --git a/package.json b/package.json index a7f065f1..f1bacace 100644 --- a/package.json +++ b/package.json @@ -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",