full diff

tech.lenooby09.kvcs.patch

From
bafyreibxgvrg2ae2nelaxszeo6jekjn7v7e3ts5hhmbfimdyfangmqyu3m indexed 2026-05-01 19:53 UTC View this version
To
bafyreievoj6p4vxo3ksu4mhymub5jcnf4orwy23chrrtdgkj3hwyqpordu indexed 2026-05-05 13:43 UTC View this version

Compatibility

breaking 3 breaking changes, 0 non-breaking changes.

Breaking changes (3)
  • ConstraintAdded ConstraintAdded { vertex_id: "tech.lenooby09.kvcs.patch:body.patchCbor", sort: "maxLength", value: "20480" }
  • ConstraintAdded ConstraintAdded { vertex_id: "tech.lenooby09.kvcs.patch:body.jws", sort: "maxLength", value: "8192" }
  • ConstraintAdded ConstraintAdded { vertex_id: "tech.lenooby09.kvcs.patch:body.patchId", sort: "maxLength", value: "128" }

Migration guidance

Constraint changes

  • ConstraintAdded ConstraintAdded { vertex_id: "tech.lenooby09.kvcs.patch:body.jws", sort: "maxLength", value: "8192" }
  • ConstraintAdded ConstraintAdded { vertex_id: "tech.lenooby09.kvcs.patch:body.patchId", sort: "maxLength", value: "128" }
  • ConstraintAdded ConstraintAdded { vertex_id: "tech.lenooby09.kvcs.patch:body.patchCbor", sort: "maxLength", value: "20480" }

Changes

11{
22 "$type": "com.atproto.lexicon.schema",
33 "defs": {
44 "main": {
55 "description": "A signed kvcs patch envelope record. Carries the canonical CBOR of the patch and its detached compact JWS, indexed by the patch's hex multihash id.",
66 "key": "any",
77 "record": {
88 "properties": {
99 "jws": {
10 "description": "Detached compact JWS over patchCbor, identical to the local SignedPatch.jws field.",
10 "description": "Detached compact JWS over patchCbor, identical to the local SignedPatch.jws field. 8192 chars covers Ed25519 / ES256 / ES256K compact-JWS sizes with a comfortable margin.",
11 "maxLength": 8192,
1112 "type": "string"
1213 },
1314 "patchCbor": {
14 "description": "Base64url-encoded canonical CBOR of the signed patch.",
15 "description": "Base64url-encoded canonical CBOR of the signed patch. Capped at 20 KiB (20480 chars) — the largest a Lexicon string field can be without triggering goat's `large-string` lint, which recommends using blob refs for anything bigger. Patches whose base64 form exceeds this cap should be split or migrated to a blob-based record schema; in practice, atproto PDSes already enforce a tight per-record size limit well below 1 MiB.",
16 "maxLength": 20480,
1517 "type": "string"
1618 },
1719 "patchId": {
18 "description": "Lower-case hex multihash of the canonical CBOR — matches kvcs's PatchId.",
20 "description": "Lower-case hex multihash of the canonical CBOR — matches kvcs's PatchId. 128 chars covers the longest hashes in current use (BLAKE3, SHA-512, etc.).",
21 "maxLength": 128,
1922 "type": "string"
2023 }
2124 },
2225 "required": [
2326 "patchId",
2427 "patchCbor",
2528 "jws"
2629 ],
2730 "type": "object"
2831 },
2932 "type": "record"
3033 }
3134 },
3235 "description": "A signed kvcs patch envelope, addressable on the author's atproto PDS. The rkey is the patch id in hex.",
3336 "id": "tech.lenooby09.kvcs.patch",
3437 "lexicon": 1
3538}

Compare other versions