tech.lenooby09.kvcs.patch
Schema Diff
+6 -3
Compatibility Analysis
Breaking Changes Detected
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" }
1
1
{
2
2
"id": "tech.lenooby09.kvcs.patch",
3
3
"defs": {
4
4
"main": {
5
5
"key": "any",
6
6
"type": "record",
7
7
"record": {
8
8
"type": "object",
9
9
"required": [
10
10
"patchId",
11
11
"patchCbor",
12
12
"jws"
13
13
],
14
14
"properties": {
15
15
"jws": {
16
16
"type": "string",
17
-
"description": "Detached compact JWS over patchCbor, identical to the local SignedPatch.jws field."
17
+
"maxLength": 8192,
18
+
"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."
18
19
},
19
20
"patchId": {
20
21
"type": "string",
21
-
"description": "Lower-case hex multihash of the canonical CBOR — matches kvcs's PatchId."
22
+
"maxLength": 128,
23
+
"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.)."
22
24
},
23
25
"patchCbor": {
24
26
"type": "string",
25
-
"description": "Base64url-encoded canonical CBOR of the signed patch."
27
+
"maxLength": 20480,
28
+
"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."
26
29
}
27
30
}
28
31
},
29
32
"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."
30
33
}
31
34
},
32
35
"$type": "com.atproto.lexicon.schema",
33
36
"lexicon": 1,
34
37
"description": "A signed kvcs patch envelope, addressable on the author's atproto PDS. The rkey is the patch id in hex."
35
38
}