From
bafyreiblm3lo6nlzwkefentt3patuze5ca7nxrxb45sg2lsy5pyewf4jfe
indexed 2026-11-03 17:02 UTC
View this version
To
bafyreics44n2hkvryicl6ed5wsqrbyfijvtp6326w6u5zgcaduab2a2d54
indexed 2026-11-06 01:44 UTC
View this version
Compatibility
breaking 2 breaking changes, 3 non-breaking changes.
Breaking changes (2)
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "org.cairnsproto.draft.defs#property", src: "org.cairnsproto.draft.defs#property", tgt: "org.cairnsproto.draft.defs#property.pointer", kind: "prop", name: Some("pointer") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "org.cairnsproto.draft.defs#property", src: "org.cairnsproto.draft.defs#property", tgt: "org.cairnsproto.draft.defs#property.value", kind: "prop", name: Some("value") }
Non-breaking changes (3)
- AddedVertex AddedVertex { vertex_id: "org.cairnsproto.draft.defs#property" }
- AddedVertex AddedVertex { vertex_id: "org.cairnsproto.draft.defs#property.pointer" }
- AddedVertex AddedVertex { vertex_id: "org.cairnsproto.draft.defs#property.value" }
Migration guidance
Added
AddedVertex { vertex_id: "org.cairnsproto.draft.defs#property" }AddedVertex { vertex_id: "org.cairnsproto.draft.defs#property.pointer" }AddedVertex { vertex_id: "org.cairnsproto.draft.defs#property.value" }
Notes
- Breaking: RequiredEdgeAdded { vertex_id: "org.cairnsproto.draft.defs#property", src: "org.cairnsproto.draft.defs#property", tgt: "org.cairnsproto.draft.defs#property.pointer", kind: "prop", name: Some("pointer") }
- Breaking: RequiredEdgeAdded { vertex_id: "org.cairnsproto.draft.defs#property", src: "org.cairnsproto.draft.defs#property", tgt: "org.cairnsproto.draft.defs#property.value", kind: "prop", name: Some("value") }
Changes
11
{22
"$type": "com.atproto.lexicon.schema",33
"defs": {44
"blobPayload": {55
"properties": {66
"blob": {77
"maxSize": 1000000,88
"type": "blob"99
}1010
},1111
"required": [1212
"blob"1313
],1414
"type": "object"1515
},1616
"conversion": {1717
"description": "The payload of a converted stone: the derived source a transform produces from the site's source, by hash, and the transform. Once the conversion clears the open-children bar, each course built on this one opens one unmarked site on it, which works the derived source. Its value is the source hash alone with $type org.cairnsproto.draft.defs#conversion, so two transforms that produce the same output agree and build the same sites.",1818
"properties": {1919
"source": {2020
"description": "sha256 of the transform's output on the site's source.",2121
"ref": "#hash",2222
"type": "ref"2323
},2424
"transform": {2525
"description": "The transform record, at the version that produced the output. Provenance only: it tells a client what to re-run and is not part of the value.",2626
"ref": "com.atproto.repo.strongRef",2727
"type": "ref"2828
}2929
},3030
"required": [3131
"source",3232
"transform"3333
],3434
"type": "object"3535
},3636
"cost": {3737
"description": "Self-reported effort, as the harness reports it. Comparable across contributors on the same model; never verified.",3838
"properties": {3939
"cachedTokens": {4040
"description": "Input tokens served from a prompt cache.",4141
"minimum": 0,4242
"type": "integer"4343
},4444
"inputTokens": {4545
"minimum": 0,4646
"type": "integer"4747
},4848
"outputTokens": {4949
"minimum": 0,5050
"type": "integer"5151
},5252
"seconds": {5353
"description": "Wall-clock seconds.",5454
"minimum": 0,5555
"type": "integer"5656
}5757
},5858
"required": [5959
"inputTokens",6060
"outputTokens",6161
"seconds"6262
],6363
"type": "object"6464
},6565
"external": {6666
"description": "Bytes stored outside the PDS. The hash is the identity; any copy matching it is valid.",6767
"properties": {6868
"hash": {6969
"ref": "#hash",7070
"type": "ref"7171
},7272
"urls": {7373
"items": {7474
"format": "uri",7575
"type": "string"7676
},7777
"maxLength": 32,7878
"type": "array"7979
}8080
},8181
"required": [8282
"hash"8383
],8484
"type": "object"8585
},8686
"externalPayload": {8787
"properties": {8888
"external": {8989
"ref": "#external",9090
"type": "ref"9191
}9292
},9393
"required": [9494
"external"9595
],9696
"type": "object"9797
},9898
"hash": {9999
"description": "A content digest. Site keys, schema identities and segment states are sha256; a source may also be a git object named by git-sha1 or git-sha256.",100100
"properties": {101101
"alg": {102102
"knownValues": [103103
"sha256",104104
"git-sha1",105105
"git-sha256"106106
],107107
"maxLength": 32,108108
"type": "string"109109
},110110
"value": {111111
"description": "Lowercase hex digest.",112112
"maxLength": 128,113113
"minLength": 1,114114
"type": "string"115115
}116116
},117117
"required": [118118
"alg",119119
"value"120120
],121121
"type": "object"122122
},123123
"inlinePayload": {124124
"properties": {125125
"data": {126126
"description": "Validated against the site's schema.",127127
"type": "unknown"128128
}129129
},130130
"required": [131131
"data"132132
],133133
"type": "object"134134
},135135
"method": {136136
"description": "How a stone was produced. Versions are exact. config and cost are self-reported.",137137
"properties": {138138
"agent": {139139
"description": "A stable label the sponsor chooses for an agent writing to the sponsor's own repo.",140140
"maxLength": 64,141141
"type": "string"142142
},143143
"config": {144144
"description": "Hash of the agent setup, so a recall can target a faulty configuration.",145145
"ref": "#hash",146146
"type": "ref"147147
},148148
"cost": {149149
"ref": "#cost",150150
"type": "ref"151151
},152152
"env": {153153
"maxLength": 1024,154154
"type": "string"155155
},156156
"model": {157157
"description": "Model family.",158158
"maxLength": 256,159159
"type": "string"160160
},161161
"modelVersion": {162162
"maxLength": 128,163163
"type": "string"164164
},165165
"procedure": {166166
"description": "The procedure record the stone followed.",167167
"ref": "com.atproto.repo.strongRef",168168
"type": "ref"169169
},170170
"thinking": {171171
"description": "Thinking or reasoning level.",172172
"maxLength": 64,173173
"type": "string"174174
},175175
"tool": {176176
"maxLength": 256,177177
"type": "string"178178
},179179
"toolVersion": {180180
"maxLength": 128,181181
"type": "string"182182
}183183
},184184
"required": [185185
"tool",186186
"toolVersion"187187
],188188
"type": "object"189189
},190190
"methodSelector": {191191
"description": "Matches stones by method. Absent fields match anything.",192192
"properties": {193193
"config": {194194
"ref": "#hash",195195
"type": "ref"196196
},197197
"model": {198198
"maxLength": 256,199199
"type": "string"200200
},201201
"modelVersion": {202202
"maxLength": 128,203203
"type": "string"204204
},205205
"tool": {206206
"maxLength": 256,207207
"type": "string"208208
},209209
"toolVersion": {210210
"maxLength": 128,211211
"type": "string"212212
}213213
},214214
"required": [215215
"tool",216216
"toolVersion"217217
],218218
"type": "object"219219
},220220
"pageRange": {221221
"description": "1-based pages of a PDF, first through last.",222222
"properties": {223223
"first": {224224
"minimum": 1,225225
"type": "integer"226226
},227227
"last": {228228
"minimum": 1,229229
"type": "integer"230230
}231231
},232232
"required": [233233
"first",234234
"last"235235
],236236
"type": "object"237237
},238238
"pairBase": {239239
"description": "Equivalence site: two site keys in canonical (sorted) order.",240240
"properties": {241241
"sites": {242242
"items": {243243
"ref": "#hash",244244
"type": "ref"245245
},246246
"maxLength": 2,247247
"minLength": 2,248248
"type": "array"249249
}250250
},251251
"required": [252252
"sites"253253
],254254
"type": "object"255255
},256256
"parentBase": {257257
"description": "Course k+1: the site marks into one candidate value of a parent site.",258258
"properties": {259259
"parent": {260260
"description": "Site key of the parent site.",261261
"ref": "#hash",262262
"type": "ref"263263
},264264
"value": {265265
"description": "Digest of the canonical parent value this site builds on.",266266
"ref": "#hash",267267
"type": "ref"268268
}269269
},270270
"required": [271271
"parent",272272
"value"273273
],274274
"type": "object"275275
},276
"property": {277
"description": "A declared property of an equivalence cluster member's value: the JSON Pointer it sits at and the value there. A pooled candidate's digest is that of this object with $type org.cairnsproto.draft.defs#property, so it never shares a digest with a site's own value.",278
"properties": {279
"pointer": {280
"maxLength": 1024,281
"type": "string"282
},283
"value": {284
"type": "unknown"285
}286
},287
"required": [288
"pointer",289
"value"290
],291
"type": "object"292
},276293
"sealedPayload": {277294
"description": "Timelock-encrypted to a drand quicknet round under blind policies.",278295
"properties": {279296
"round": {280297
"minimum": 1,281298
"type": "integer"282299
},283300
"sealed": {284301
"maxSize": 1000000,285302
"type": "blob"286303
}287304
},288305
"required": [289306
"sealed",290307
"round"291308
],292309
"type": "object"293310
},294311
"site": {295312
"description": "The unit of work. Stones compete when base, mark and schema are exactly equal.",296313
"properties": {297314
"base": {298315
"closed": true,299316
"refs": [300317
"#sourceBase",301318
"#parentBase",302319
"#pairBase"303320
],304321
"type": "union"305322
},306323
"mark": {307324
"description": "Absent for equivalence sites and for sites that cover a whole base.",308325
"refs": [309326
"org.cairnsproto.draft.mark#pdfRegion",310327
"org.cairnsproto.draft.mark#imageRegion",311328
"org.cairnsproto.draft.mark#sheetRange",312329
"org.cairnsproto.draft.mark#tableRange",313330
"org.cairnsproto.draft.mark#textQuote",314331
"org.cairnsproto.draft.mark#cssSelector",315332
"org.cairnsproto.draft.mark#textPosition",316333
"org.cairnsproto.draft.mark#gitPath",317334
"org.cairnsproto.draft.mark#jsonPointer",318335
"org.cairnsproto.draft.mark#archiveMember",319336
"org.cairnsproto.draft.mark#mediaTime",320337
"org.cairnsproto.draft.mark#spaceRange"321338
],322339
"type": "union"323340
},324341
"schema": {325342
"description": "Hash of the payload schema's definition. Part of the site, so competing stones are always comparable.",326343
"ref": "#hash",327344
"type": "ref"328345
}329346
},330347
"required": [331348
"base",332349
"schema"333350
],334351
"type": "object"335352
},336353
"sourceBase": {337354
"description": "Course 0: the site marks into a source.",338355
"properties": {339356
"source": {340357
"ref": "#hash",341358
"type": "ref"342359
}343360
},344361
"required": [345362
"source"346363
],347364
"type": "object"348365
},349366
"split": {350367
"description": "The payload of a split stone: the page ranges a site breaks into, in order, each starting on the page after the previous one ends. Once the split clears the open-children bar, the site's course opens one site per part, marked by a jsonPointer to it (/parts/0, /parts/1, ...). Its value is the payload with $type org.cairnsproto.draft.defs#split.",351368
"properties": {352369
"parts": {353370
"items": {354371
"ref": "#splitPart",355372
"type": "ref"356373
},357374
"maxLength": 1000,358375
"minLength": 2,359376
"type": "array"360377
}361378
},362379
"required": [363380
"parts"364381
],365382
"type": "object"366383
},367384
"splitPart": {368385
"properties": {369386
"pages": {370387
"ref": "#pageRange",371388
"type": "ref"372389
}373390
},374391
"required": [375392
"pages"376393
],377394
"type": "object"378395
}379396
},380397
"description": "Shared definitions for Cairns records. Every Cairns record is dedicated to the public domain under CC0-1.0; placing a record asserts the right to dedicate it. Fractions are integers in parts per million (0 to 1000000) so every indexer computes identical results.",381398
"id": "org.cairnsproto.draft.defs",382399
"lexicon": 1383400
}