app.golfthesky.round
Schema Diff
+4 -1
Compatibility Analysis
Breaking Changes Detected
1 breaking change, 0 non-breaking changes.
Breaking Changes (1)
- ConstraintTightened ConstraintTightened { vertex_id: "app.golfthesky.round#hole.holeId", sort: "knownValues", old_value: "[\"opening-drive\",\"dogleg\",\"sky-ramp\"]", new_value: "[\"opening-drive\",\"dogleg\",\"sky-ramp\",\"slick-slope\",\"bunker-alley\",\"island-hop\"]" }
Migration Guidance
Constraint Changes
- ConstraintTightened ConstraintTightened { vertex_id: "app.golfthesky.round#hole.holeId", sort: "knownValues", old_value: "[\"opening-drive\",\"dogleg\",\"sky-ramp\"]", new_value: "[\"opening-drive\",\"dogleg\",\"sky-ramp\",\"slick-slope\",\"bunker-alley\",\"island-hop\"]" }
1
1
{
2
2
"$type": "com.atproto.lexicon.schema",
3
3
"defs": {
4
4
"hole": {
5
5
"properties": {
6
6
"holeId": {
7
7
"description": "Permanent identity of the hole within the course.",
8
8
"knownValues": [
9
9
"opening-drive",
10
10
"dogleg",
11
-
"sky-ramp"
11
+
"sky-ramp",
12
+
"slick-slope",
13
+
"bunker-alley",
14
+
"island-hop"
12
15
],
13
16
"maxLength": 64,
14
17
"type": "string"
15
18
},
16
19
"shots": {
17
20
"description": "The whole hole as the only input the game takes. Comma-separated `<dtick>.<yaw>.<pitch>.<power>` entries: dtick is 120 Hz ticks since the previous shot, yaw is milliradians (0–6283), pitch whole degrees, power 1–100. Example: `360.1571.24.80,540.1600.2.30`.",
18
21
"maxLength": 8000,
19
22
"type": "string"
20
23
},
21
24
"strokes": {
22
25
"description": "Advisory stroke count, including out-of-bounds penalties.",
23
26
"minimum": 0,
24
27
"type": "integer"
25
28
},
26
29
"ticks": {
27
30
"description": "Advisory: the tick the ball dropped. Absent if the hole was never finished.",
28
31
"minimum": 1,
29
32
"type": "integer"
30
33
}
31
34
},
32
35
"required": [
33
36
"holeId",
34
37
"shots",
35
38
"strokes"
36
39
],
37
40
"type": "object"
38
41
},
39
42
"main": {
40
43
"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.",
41
44
"key": "tid",
42
45
"record": {
43
46
"properties": {
44
47
"courseId": {
45
48
"description": "Permanent identity of the course played. Append-only: ids are never reordered, renamed, or reused.",
46
49
"knownValues": [
47
50
"skyline-links"
48
51
],
49
52
"maxLength": 64,
50
53
"type": "string"
51
54
},
52
55
"createdAt": {
53
56
"format": "datetime",
54
57
"type": "string"
55
58
},
56
59
"field": {
57
60
"description": "How many players were in that live round.",
58
61
"minimum": 1,
59
62
"type": "integer"
60
63
},
61
64
"holes": {
62
65
"items": {
63
66
"ref": "#hole",
64
67
"type": "ref"
65
68
},
66
69
"maxLength": 18,
67
70
"type": "array"
68
71
},
69
72
"mode": {
70
73
"description": "solo: against local bots. live: against other players on a synced clock — the only mode in which placing means anything.",
71
74
"knownValues": [
72
75
"solo",
73
76
"live"
74
77
],
75
78
"type": "string"
76
79
},
77
80
"placing": {
78
81
"description": "Advisory finishing position in a live round, 1 = won.",
79
82
"minimum": 1,
80
83
"type": "integer"
81
84
},
82
85
"simVersion": {
83
86
"description": "Which physics produced these shots. A verifier must replay under the matching version or refuse the round.",
84
87
"minimum": 1,
85
88
"type": "integer"
86
89
}
87
90
},
88
91
"required": [
89
92
"courseId",
90
93
"simVersion",
91
94
"holes",
92
95
"createdAt"
93
96
],
94
97
"type": "object"
95
98
},
96
99
"type": "record"
97
100
}
98
101
},
99
102
"id": "app.golfthesky.round",
100
103
"lexicon": 1
101
104
}