app.golfthesky.round

golfthesky.app

Schema Diff

+5 -1

From

CID
bafyreihfa7qt2by...
Indexed At
2026-10-09 06:02 UTC
View this version

To

CID
bafyreih2ee3tq6p...
Indexed At
2026-10-09 06:35 UTC
View this version

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
}

Compare Other Versions

Lexicon Garden

@