One Golf the Sky round, published by the player into their own repo. The record stores every shot rather than a score: the game's ball physics are deterministic, so re-simulating the shots reproduces the round exactly. Owning the record is the identity proof, and replaying it is the score proof — strokes and ticks in this record are advisory and never trusted by a leaderboard.
tid
Timestamp-based ID
Properties
courseId
string
Required
Permanent identity of the course played. Append-only: ids are never reordered, renamed, or reused.
maxLength: 64 bytesskyline-linkscreatedAt
string
datetime
Required
An RFC 3339 formatted timestamp.
field
integer
Optional
How many players were in that live round.
minimum: 1holes
array
of
ref
#hole
Required
No description available.
maxLength: 18 itemsmode
string
Optional
solo: against local bots. live: against other players on a synced clock — the only mode in which placing means anything.
solo, liveplacing
integer
Optional
Advisory finishing position in a live round, 1 = won.
minimum: 1players
array
of
ref
#player
Optional
Everyone else who played this round, each with their own shot logs, so a replay of this one record shows the whole field. Bots carry a did of the form bot:N. Advisory, like placing: only the owner's own holes are theirs to prove.
maxLength: 7 itemssimVersion
integer
Required
Which physics produced these shots. A verifier must replay under the matching version or refuse the round.
minimum: 1target
integer
Optional
The pills (hole wins) the round was played to.
minimum: 1maximum: 9View raw schema
{
"description": "One Golf the Sky round, published by the player into their own repo. The record stores every shot rather than a score: the game's ball physics are deterministic, so re-simulating the shots reproduces the round exactly. Owning the record is the identity proof, and replaying it is the score proof — strokes and ticks in this record are advisory and never trusted by a leaderboard.",
"key": "tid",
"record": {
"properties": {
"courseId": {
"description": "Permanent identity of the course played. Append-only: ids are never reordered, renamed, or reused.",
"knownValues": [
"skyline-links"
],
"maxLength": 64,
"type": "string"
},
"createdAt": {
"format": "datetime",
"type": "string"
},
"field": {
"description": "How many players were in that live round.",
"minimum": 1,
"type": "integer"
},
"holes": {
"items": {
"ref": "#hole",
"type": "ref"
},
"maxLength": 18,
"type": "array"
},
"mode": {
"description": "solo: against local bots. live: against other players on a synced clock — the only mode in which placing means anything.",
"knownValues": [
"solo",
"live"
],
"type": "string"
},
"placing": {
"description": "Advisory finishing position in a live round, 1 = won.",
"minimum": 1,
"type": "integer"
},
"players": {
"description": "Everyone else who played this round, each with their own shot logs, so a replay of this one record shows the whole field. Bots carry a did of the form bot:N. Advisory, like placing: only the owner's own holes are theirs to prove.",
"items": {
"ref": "#player",
"type": "ref"
},
"maxLength": 7,
"type": "array"
},
"simVersion": {
"description": "Which physics produced these shots. A verifier must replay under the matching version or refuse the round.",
"minimum": 1,
"type": "integer"
},
"target": {
"description": "The pills (hole wins) the round was played to.",
"maximum": 9,
"minimum": 1,
"type": "integer"
}
},
"required": [
"courseId",
"simVersion",
"holes",
"createdAt"
],
"type": "object"
},
"type": "record"
}