From
bafyreicnjojnfpgujhwer4l6dhw33wjqexvt3khuexstkvdufrvzmnwk6m
indexed 2026-11-01 19:14 UTC
View this version
To
bafyreic7gifikyiis6a65rkh6ukxubf4q6fy5kxuuezxx3i6ckyrxz6kbm
indexed 2026-11-03 16:48 UTC
View this version
Compatibility
backward compatible Backward compatible. 9 non-breaking changes.
Non-breaking changes (9)
- AddedVertex AddedVertex { vertex_id: "tech.manos.racecalls.call:body.generation" }
- AddedVertex AddedVertex { vertex_id: "tech.manos.racecalls.call:body.observation" }
- AddedVertex AddedVertex { vertex_id: "tech.manos.racecalls.call:body.raceCallStatus" }
- AddedVertex AddedVertex { vertex_id: "tech.manos.racecalls.call:body.retracts" }
- AddedEdge AddedEdge { src: "tech.manos.racecalls.call:body", tgt: "tech.manos.racecalls.call:body.generation", kind: "prop", name: Some("generation") }
- AddedEdge AddedEdge { src: "tech.manos.racecalls.call:body", tgt: "tech.manos.racecalls.call:body.observation", kind: "prop", name: Some("observation") }
- AddedEdge AddedEdge { src: "tech.manos.racecalls.call:body", tgt: "tech.manos.racecalls.call:body.raceCallStatus", kind: "prop", name: Some("raceCallStatus") }
- AddedEdge AddedEdge { src: "tech.manos.racecalls.call:body", tgt: "tech.manos.racecalls.call:body.retracts", kind: "prop", name: Some("retracts") }
- AddedEdge AddedEdge { src: "tech.manos.racecalls.call:body.retracts", tgt: "com.atproto.repo.strongRef", kind: "ref", name: None }
Migration guidance
Added
AddedVertex { vertex_id: "tech.manos.racecalls.call:body.generation" }AddedVertex { vertex_id: "tech.manos.racecalls.call:body.observation" }AddedVertex { vertex_id: "tech.manos.racecalls.call:body.raceCallStatus" }AddedVertex { vertex_id: "tech.manos.racecalls.call:body.retracts" }
Notes
- Non-breaking: AddedEdge { src: "tech.manos.racecalls.call:body", tgt: "tech.manos.racecalls.call:body.generation", kind: "prop", name: Some("generation") }
- Non-breaking: AddedEdge { src: "tech.manos.racecalls.call:body", tgt: "tech.manos.racecalls.call:body.observation", kind: "prop", name: Some("observation") }
- Non-breaking: AddedEdge { src: "tech.manos.racecalls.call:body", tgt: "tech.manos.racecalls.call:body.raceCallStatus", kind: "prop", name: Some("raceCallStatus") }
- Non-breaking: AddedEdge { src: "tech.manos.racecalls.call:body", tgt: "tech.manos.racecalls.call:body.retracts", kind: "prop", name: Some("retracts") }
- Non-breaking: AddedEdge { src: "tech.manos.racecalls.call:body.retracts", tgt: "com.atproto.repo.strongRef", kind: "ref", name: None }
Changes
11
{22
"$type": "com.atproto.lexicon.schema",33
"defs": {44
"main": {55
"description": "Structured data for one race call posted by the unofficial racecalls bot. Stored at the same rkey as its post.",66
"key": "tid",77
"record": {88
"properties": {99
"apLastUpdated": {1010
"format": "datetime",1111
"type": "string"1212
},1313
"botVersion": {1414
"type": "string"1515
},1616
"callKind": {1717
"knownValues": [1818
"win",1919
"runoff_advancement",2020
"general_advancement"2121
],2222
"type": "string"2323
},2424
"calledAt": {2525
"format": "datetime",2626
"type": "string"2727
},2828
"candidateId": {2929
"type": "string"3030
},3131
"createdAt": {3232
"format": "datetime",3333
"type": "string"3434
},3535
"electionDate": {3636
"description": "YYYY-MM-DD. Lexicon has no date-only format.",3737
"type": "string"3838
},3939
"fetchedAt": {4040
"format": "datetime",4141
"type": "string"4242
},43
"generation": {44
"description": "The call's generation; absent means 0. Written on call records from generation 1 on, and on every retraction record.",45
"minimum": 0,46
"type": "integer"47
},4348
"idempotencyKey": {4449
"type": "string"4550
},4651
"kind": {4752
"knownValues": [4853
"call",4954
"retraction"5055
],5156
"type": "string"5257
},5358
"metadataSha256": {5459
"description": "Lowercase hex SHA-256 digest.",5560
"maxLength": 64,5661
"minLength": 64,5762
"type": "string"5863
},64
"observation": {65
"description": "On a retraction record: the observation that qualified it.",66
"knownValues": [67
"no_winner"68
],69
"type": "string"70
},5971
"office": {6072
"knownValues": [6173
"H",6274
"S",6375
"G"6476
],6577
"type": "string"6678
},6779
"post": {6880
"description": "The post this record describes.",6981
"ref": "com.atproto.repo.strongRef",7082
"type": "ref"7183
},7284
"progressSha256": {7385
"description": "Lowercase hex SHA-256 digest.",7486
"maxLength": 64,7587
"minLength": 64,7688
"type": "string"7789
},90
"raceCallStatus": {91
"description": "On a retraction record: the observed AP raceCallStatus.",92
"type": "string"93
},7894
"raceClass": {7995
"knownValues": [8096
"general",8197
"general_runoff",8298
"special_general",8399
"party_primary",84100
"open_primary",85101
"rcv_general",86102
"nonpartisan",87103
"nonpartisan_runoff",88104
"all_party_primary"89105
],90106
"type": "string"91107
},92108
"raceId": {93109
"type": "string"94110
},111
"retracts": {112
"description": "On a retraction record: the original call post.",113
"ref": "com.atproto.repo.strongRef",114
"type": "ref"115
},95116
"scope": {96117
"type": "string"97118
},98119
"winner": {99120
"knownValues": [100121
"X",101122
"R"102123
],103124
"type": "string"104125
}105126
},106127
"required": [107128
"post",108129
"kind",109130
"idempotencyKey",110131
"raceId",111132
"candidateId",112133
"winner",113134
"callKind",114135
"raceClass",115136
"office",116137
"calledAt",117138
"apLastUpdated",118139
"fetchedAt",119140
"metadataSha256",120141
"progressSha256",121142
"electionDate",122143
"scope",123144
"botVersion",124145
"createdAt"125146
],126147
"type": "object"127148
},128149
"type": "record"129150
}130151
},131152
"id": "tech.manos.racecalls.call",132153
"lexicon": 1133154
}