full diff

tech.lenooby09.kvcs.tag

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": 1
5056}

Compare other versions