The round's ballot sheet, revealed as one atomic record when signups close. Published by the round organizer. The candidate list itself lives in an at.atjam.playlist of at.eptss.track records — this record pins that playlist by CID and adds only what a playlist must never carry: round attribution and who nominated what. Ballots strong-ref this ledger, so the pin chain runs ballot → ledger → playlist → tracks, and a post-hoc edit anywhere is detectable. Attribution keys on the track's AT-URI, never on its position — a positional array desyncs silently on one reorder. The organizer honors un-naming requests by editing nominations in place.
any
Any valid record key
Properties
nominations
array
of
ref
#nomination
Required
Who put what in the hat. Empty when every candidate was organizer-carried. Tracks absent here are carried candidates, unattributed by design.
maxLength: 256 itemsplaylist
ref
com.atproto.repo.strongRef
Required
The at.atjam.playlist holding the candidates, in ballot order, CID-pinned.
publishedAt
string
datetime
Required
An RFC 3339 formatted timestamp.
round
ref
com.atproto.repo.strongRef
Required
The at.atjam.round this ledger belongs to.
View raw schema
{
"key": "any",
"type": "record",
"record": {
"type": "object",
"required": [
"round",
"playlist",
"nominations",
"publishedAt"
],
"properties": {
"round": {
"ref": "com.atproto.repo.strongRef",
"type": "ref",
"description": "The at.atjam.round this ledger belongs to."
},
"playlist": {
"ref": "com.atproto.repo.strongRef",
"type": "ref",
"description": "The at.atjam.playlist holding the candidates, in ballot order, CID-pinned."
},
"nominations": {
"type": "array",
"items": {
"ref": "#nomination",
"type": "ref"
},
"maxLength": 256,
"description": "Who put what in the hat. Empty when every candidate was organizer-carried. Tracks absent here are carried candidates, unattributed by design."
},
"publishedAt": {
"type": "string",
"format": "datetime"
}
}
},
"description": "The round's ballot sheet, revealed as one atomic record when signups close. Published by the round organizer. The candidate list itself lives in an at.atjam.playlist of at.eptss.track records — this record pins that playlist by CID and adds only what a playlist must never carry: round attribution and who nominated what. Ballots strong-ref this ledger, so the pin chain runs ballot → ledger → playlist → tracks, and a post-hoc edit anywhere is detectable. Attribution keys on the track's AT-URI, never on its position — a positional array desyncs silently on one reorder. The organizer honors un-naming requests by editing nominations in place."
}