app.golfthesky.round
{
"$type": "com.atproto.lexicon.schema",
"defs": {
"hole": {
"properties": {
"holeId": {
"description": "Permanent identity of the hole within the course.",
"knownValues": [
"opening-drive",
"dogleg",
"sky-ramp",
"slick-slope",
"bunker-alley",
"island-hop",
"first-light",
"sticky-situation",
"ice-cave",
"archipelago",
"clockwork",
"mill-race",
"skyhook",
"paddle-alley",
"crater"
],
"maxLength": 64,
"type": "string"
},
"shots": {
"description": "The whole hole as the only input the game takes. Comma-separated `<dtick>.<angle>.<mod>.<power>` entries: dtick is 120 Hz ticks since the previous entry, angle is milliradians counter-clockwise from +x (0–6283), mod is the ball type applied to that swing (0 none, 1 sticky, 2 super, 3 nitro, 4 air brakes, 5 sniper), power 1–100. An entry with power 0 is an event, not a swing: mod 4 is an Air Brakes tap, mod 5 a Mulligan. Power-ups cost energy; a verifier recomputes energy from the clock (starts at 4, +1 every 360 ticks, max 10; costs sticky 4, super 3, nitro 4, brakes 5, mulligan 6, sniper 6) and refuses a log that overspends. Example: `360.785.0.80,540.0.4.0`.",
"maxLength": 8000,
"type": "string"
},
"strokes": {
"description": "Advisory stroke count, including out-of-bounds penalties.",
"minimum": 0,
"type": "integer"
},
"ticks": {
"description": "Advisory: the tick the ball dropped. Absent if the hole was never finished.",
"minimum": 1,
"type": "integer"
}
},
"required": [
"holeId",
"shots",
"strokes"
],
"type": "object"
},
"main": {
"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"
},
"player": {
"properties": {
"did": {
"description": "Their DID, or bot:N for a local bot.",
"maxLength": 300,
"type": "string"
},
"handle": {
"description": "Their handle when the round was played (advisory).",
"maxLength": 100,
"type": "string"
},
"holes": {
"items": {
"ref": "#hole",
"type": "ref"
},
"maxLength": 18,
"type": "array"
}
},
"required": [
"did",
"handle",
"holes"
],
"type": "object"
}
},
"id": "app.golfthesky.round",
"lexicon": 1
}
Metadata
- DID
-
did:plc:4ukvmcc7pscat4djemk4ckfl - CID
-
bafyreidl45ckrihr53hji7bxyrifxmxficltzv47qflm6tmuioihwkymxy - Indexed At
- 2026-10-09 15:49 UTC
- AT-URI
-
at://did:plc:4ukvmcc7pscat4djemk4ckfl/com.atproto.lexicon.schema/app.golfthesky.round
Version History (6 versions)
Similar Lexicons
Lexicons whose schemas describe something close to this one. Check them before publishing a new one that overlaps.
-
app.golfthesky.course record
A hole built in the Golf the Sky designer, living in the repo of whoever built it. The geometry is a list of parts from the game's parts library (blocks, slopes, hills, free shapes, rings, ponds, greens — some of them…
-
app.racethesky.run record
A single Race the Sky time-trial run, published by the player into their own repo. The record stores the raw input log rather than a result: the game's physics are deterministic, so re-simulating the log reproduces the …
-
com.gamethesky.hatsoff.run record
One Hats Off run, published by the player into their own repo. The record stores every shot rather than a score: the sim is deterministic, so re-running the fire log against the same seed on the same level reproduces th…