{
"id": "at.eptss.track",
"defs": {
"main": {
"key": "any",
"type": "record",
"record": {
"type": "object",
"required": [
"title",
"createdAt"
],
"properties": {
"title": {
"type": "string",
"maxLength": 5120,
"description": "The title as nominated. The only field that can always be rendered.",
"maxGraphemes": 512
},
"artists": {
"type": "array",
"items": {
"type": "string",
"maxLength": 5120,
"maxGraphemes": 512
},
"maxLength": 16,
"description": "Artist names in order of appearance. An array and not a joined string, because joining is a normalization nobody downstream can undo. A nomination arriving as one string 'A & B' stays one element — erring toward not splitting."
},
"createdAt": {
"type": "string",
"format": "datetime"
},
"releaseName": {
"type": "string",
"maxLength": 5120,
"maxGraphemes": 512
}
}
},
"description": "One song, published so anything can point at it. Written by the round organizer at ledger-publish time — never at nomination time, which would reveal a nomination the reveal design exists to hold back. Holds only identity: this record is CID-pinned by the round's candidate ledger and therefore frozen, so anything that might later be corrected (links, MBIDs, durations) belongs in records that point here instead — see at.eptss.trackLink. Written fresh per round rather than reused across rounds: sharing one record between two rounds couples their integrity, and a typo fixed for a later round would make an earlier round's pin read as tampered. createdAt is the ledger's publishedAt, uniformly across a round — nomination time would leak who nominated when."
}
},
"$type": "com.atproto.lexicon.schema",
"lexicon": 1
}