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