From
bafyreifja6est45wy7v74u5tqp2fmyjw7n4mj7q5br7kkzlhgss4j4m33i
indexed 2026-05-01 19:53 UTC
View this version
To
bafyreifwgurbizydrgrflg7zzu4yelyuu4dp44kfprr6hgo3k6np4s3u6i
indexed 2026-05-05 13:43 UTC
View this version
Compatibility
breaking 6 breaking changes, 0 non-breaking changes.
Breaking changes (6)
- ConstraintAdded ConstraintAdded { vertex_id: "tech.lenooby09.kvcs.tag:body.patchId", sort: "maxLength", value: "128" }
- ConstraintAdded ConstraintAdded { vertex_id: "tech.lenooby09.kvcs.tag:body.jws", sort: "maxLength", value: "8192" }
- ConstraintAdded ConstraintAdded { vertex_id: "tech.lenooby09.kvcs.tag:body.tag", sort: "maxLength", value: "16384" }
- ConstraintAdded ConstraintAdded { vertex_id: "tech.lenooby09.kvcs.tag:body.taggerDid", sort: "maxLength", value: "2048" }
- ConstraintAdded ConstraintAdded { vertex_id: "tech.lenooby09.kvcs.tag:body.digest", sort: "maxLength", value: "128" }
- ConstraintAdded ConstraintAdded { vertex_id: "tech.lenooby09.kvcs.tag:body.name", sort: "maxLength", value: "256" }
Migration guidance
Constraint changes
- ConstraintAdded ConstraintAdded { vertex_id: "tech.lenooby09.kvcs.tag:body.digest", sort: "maxLength", value: "128" }
- ConstraintAdded ConstraintAdded { vertex_id: "tech.lenooby09.kvcs.tag:body.taggerDid", sort: "maxLength", value: "2048" }
- ConstraintAdded ConstraintAdded { vertex_id: "tech.lenooby09.kvcs.tag:body.name", sort: "maxLength", value: "256" }
- ConstraintAdded ConstraintAdded { vertex_id: "tech.lenooby09.kvcs.tag:body.patchId", sort: "maxLength", value: "128" }
- ConstraintAdded ConstraintAdded { vertex_id: "tech.lenooby09.kvcs.tag:body.tag", sort: "maxLength", value: "16384" }
- ConstraintAdded ConstraintAdded { vertex_id: "tech.lenooby09.kvcs.tag:body.jws", sort: "maxLength", value: "8192" }
Changes
11
{22
"$type": "com.atproto.lexicon.schema",33
"defs": {44
"main": {55
"description": "A signed kvcs tag record. Pins a patch by its hex multihash and is itself addressed by the canonical-JSON digest of its tag payload, mirrored on disk as a SignedTag.",66
"key": "any",77
"record": {88
"properties": {99
"digest": {10
"description": "Lower-case hex BLAKE3 multihash of the canonical-JSON tag payload — equals the record's rkey.",10
"description": "Lower-case hex BLAKE3 multihash of the canonical-JSON tag payload — equals the record's rkey. 128 chars covers the longest hashes in current use.",11
"maxLength": 128,1112
"type": "string"1213
},1314
"jws": {14
"description": "Detached compact JWS over `tag`.",15
"description": "Detached compact JWS over `tag`. 8192 chars covers Ed25519 / ES256 / ES256K compact-JWS sizes with a comfortable margin.",16
"maxLength": 8192,1517
"type": "string"1618
},1719
"name": {18
"description": "Human-readable tag label (e.g. \"v0.1.0\").",20
"description": "Human-readable tag label (e.g. \"v0.1.0\"). Capped at 256 chars — kvcs tag labels are short identifiers similar to git tag names.",21
"maxLength": 256,1922
"type": "string"2023
},2124
"patchId": {22
"description": "Hex multihash of the patch this tag pins.",25
"description": "Hex multihash of the patch this tag pins. 128 chars covers the longest hashes in current use (BLAKE3, SHA-512, etc.).",26
"maxLength": 128,2327
"type": "string"2428
},2529
"tag": {26
"description": "Canonical JSON of the Tag payload, bytewise identical to the JWS input.",30
"description": "Canonical JSON of the Tag payload, bytewise identical to the JWS input. 16 KiB is well under goat's 20 KiB `large-string` lint threshold while still being generous for the small structured payloads kvcs emits today; future fields (e.g. signed annotations) still fit comfortably.",31
"maxLength": 16384,2732
"type": "string"2833
},2934
"taggerDid": {30
"description": "DID of the signer, mirrored at the top level so listRecords summaries don't need to parse `tag`.",35
"description": "DID of the signer, mirrored at the top level so listRecords summaries don't need to parse `tag`. Capped at 2048 chars to accommodate did:jwk values whose method-specific id embeds a base64url-encoded JWK.",36
"maxLength": 2048,3137
"type": "string"3238
}3339
},3440
"required": [3541
"name",3642
"digest",3743
"taggerDid",3844
"patchId",3945
"tag",4046
"jws"4147
],4248
"type": "object"4349
},4450
"type": "record"4551
}4652
},4753
"description": "A signed kvcs tag, addressable on the tagger's atproto PDS. The rkey is the canonical-JSON digest of the tag payload (lower-case hex BLAKE3 multihash).",4854
"id": "tech.lenooby09.kvcs.tag",4955
"lexicon": 15056
}