at.celest.temp.level

celest.at

Schema Diff

+51 -3

From

CID
bafyreidktrli35i...
Indexed At
2026-09-19 23:37 UTC
View this version

To

CID
bafyreihaslymkwm...
Indexed At
2026-09-20 01:35 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

4 breaking changes, 10 non-breaking changes.

Breaking Changes (4)
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "at.celest.temp.level#goldberriesInformation", src: "at.celest.temp.level#goldberriesInformation", tgt: "at.celest.temp.level#goldberriesInformation.link", kind: "prop", name: Some("link") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "at.celest.temp.level#hardclearsInformation", src: "at.celest.temp.level#hardclearsInformation", tgt: "at.celest.temp.level#hardclearsInformation.link", kind: "prop", name: Some("link") }
  • ConstraintAdded ConstraintAdded { vertex_id: "at.celest.temp.level#difficulty.color", sort: "knownValues", value: "[\"green\",\"yellow\",\"red\",\"cracked\"]" }
  • ConstraintAdded ConstraintAdded { vertex_id: "at.celest.temp.level#difficulty.category", sort: "knownValues", value: "[\"beginner\",\"intermediate\",\"advanced\",\"expert\",\"grandmaster\",\"grandmaster+1\",\"grandmaster+2\",\"grandmaster+3\",\"grandmaster+4\"]" }
Non-Breaking Changes (10)
  • AddedVertex AddedVertex { vertex_id: "at.celest.temp.level#goldberriesInformation" }
  • AddedVertex AddedVertex { vertex_id: "at.celest.temp.level#goldberriesInformation.link" }
  • AddedVertex AddedVertex { vertex_id: "at.celest.temp.level#goldberriesInformation.tier" }
  • AddedVertex AddedVertex { vertex_id: "at.celest.temp.level#hardclearsInformation" }
  • AddedVertex AddedVertex { vertex_id: "at.celest.temp.level#hardclearsInformation.clearCount" }
  • AddedVertex AddedVertex { vertex_id: "at.celest.temp.level#hardclearsInformation.link" }
  • AddedVertex AddedVertex { vertex_id: "at.celest.temp.level#hardclearsInformation.starRating" }
  • AddedEdge AddedEdge { src: "at.celest.temp.level#goldberriesInformation", tgt: "at.celest.temp.level#goldberriesInformation.tier", kind: "prop", name: Some("tier") }
  • AddedEdge AddedEdge { src: "at.celest.temp.level#hardclearsInformation", tgt: "at.celest.temp.level#hardclearsInformation.clearCount", kind: "prop", name: Some("clearCount") }
  • AddedEdge AddedEdge { src: "at.celest.temp.level#hardclearsInformation", tgt: "at.celest.temp.level#hardclearsInformation.starRating", kind: "prop", name: Some("starRating") }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "at.celest.temp.level#goldberriesInformation" }
  • AddedVertex { vertex_id: "at.celest.temp.level#goldberriesInformation.link" }
  • AddedVertex { vertex_id: "at.celest.temp.level#goldberriesInformation.tier" }
  • AddedVertex { vertex_id: "at.celest.temp.level#hardclearsInformation" }
  • AddedVertex { vertex_id: "at.celest.temp.level#hardclearsInformation.clearCount" }
  • AddedVertex { vertex_id: "at.celest.temp.level#hardclearsInformation.link" }
  • AddedVertex { vertex_id: "at.celest.temp.level#hardclearsInformation.starRating" }

Constraint Changes

  • ConstraintAdded ConstraintAdded { vertex_id: "at.celest.temp.level#difficulty.color", sort: "knownValues", value: "[\"green\",\"yellow\",\"red\",\"cracked\"]" }
  • ConstraintAdded ConstraintAdded { vertex_id: "at.celest.temp.level#difficulty.category", sort: "knownValues", value: "[\"beginner\",\"intermediate\",\"advanced\",\"expert\",\"grandmaster\",\"grandmaster+1\",\"grandmaster+2\",\"grandmaster+3\",\"grandmaster+4\"]" }

Additional Notes

  • Breaking: RequiredEdgeAdded { vertex_id: "at.celest.temp.level#goldberriesInformation", src: "at.celest.temp.level#goldberriesInformation", tgt: "at.celest.temp.level#goldberriesInformation.link", kind: "prop", name: Some("link") }
  • Breaking: RequiredEdgeAdded { vertex_id: "at.celest.temp.level#hardclearsInformation", src: "at.celest.temp.level#hardclearsInformation", tgt: "at.celest.temp.level#hardclearsInformation.link", kind: "prop", name: Some("link") }
  • Non-breaking: AddedEdge { src: "at.celest.temp.level#goldberriesInformation", tgt: "at.celest.temp.level#goldberriesInformation.tier", kind: "prop", name: Some("tier") }
  • Non-breaking: AddedEdge { src: "at.celest.temp.level#hardclearsInformation", tgt: "at.celest.temp.level#hardclearsInformation.clearCount", kind: "prop", name: Some("clearCount") }
  • Non-breaking: AddedEdge { src: "at.celest.temp.level#hardclearsInformation", tgt: "at.celest.temp.level#hardclearsInformation.starRating", kind: "prop", name: Some("starRating") }
1 1
{
2 2
  "$type": "com.atproto.lexicon.schema",
3 3
  "defs": {
4 4
    "difficulty": {
5 5
      "description": "The general colloquial name to describe the difficulty of a map",
6 6
      "properties": {
7 7
        "category": {
8 -
          "known": [
8 +
          "knownValues": [
9 9
            "beginner",
10 10
            "intermediate",
11 11
            "advanced",
12 12
            "expert",
13 13
            "grandmaster",
14 14
            "grandmaster+1",
15 15
            "grandmaster+2",
16 16
            "grandmaster+3",
17 17
            "grandmaster+4"
18 18
          ],
19 19
          "maxLength": 16,
20 20
          "type": "string"
21 21
        },
22 22
        "color": {
23 -
          "known": [
23 +
          "knownValues": [
24 24
            "green",
25 25
            "yellow",
26 26
            "red",
27 27
            "cracked"
28 28
          ],
29 29
          "maxLength": 16,
30 30
          "type": "string"
31 31
        }
32 32
      },
33 33
      "required": [
34 34
        "category"
35 35
      ],
36 36
      "type": "object"
37 37
    },
38 +
    "goldberriesInformation": {
39 +
      "description": "Additional information about this level according to goldberries",
40 +
      "properties": {
41 +
        "link": {
42 +
          "description": "A link to this level on goldberries",
43 +
          "format": "uri",
44 +
          "type": "string"
45 +
        },
46 +
        "tier": {
47 +
          "description": "The difficulty tier according to goldberries",
48 +
          "minimum": 1,
49 +
          "type": "integer"
50 +
        }
51 +
      },
52 +
      "required": [
53 +
        "link"
54 +
      ],
55 +
      "type": "object"
56 +
    },
57 +
    "hardclearsInformation": {
58 +
      "description": "Additional information about this level according to hardclears",
59 +
      "properties": {
60 +
        "clearCount": {
61 +
          "description": "How many verified clears this level has",
62 +
          "minimum": 1,
63 +
          "type": "integer"
64 +
        },
65 +
        "link": {
66 +
          "description": "A link to this level on hardclears",
67 +
          "format": "uri",
68 +
          "type": "string"
69 +
        },
70 +
        "starRating": {
71 +
          "description": "The star rating according to hardclears as a string (since lexicon v1 doesn't have a float type apparently). Formatted as '0.00'",
72 +
          "maxGraphemes": 4,
73 +
          "maxLength": 4,
74 +
          "minGraphemes": 4,
75 +
          "minLength": 4,
76 +
          "type": "string"
77 +
        }
78 +
      },
79 +
      "required": [
80 +
        "link"
81 +
      ],
82 +
      "type": "object"
83 +
    },
38 84
    "main": {
39 85
      "description": "A level you can play in Celeste",
40 86
      "key": "tid",
41 87
      "record": {
42 88
        "properties": {
43 89
          "banner": {
90 +
            "description": "A screenshot or banner image representing the level",
44 91
            "type": "blob"
45 92
          },
46 93
          "difficulty": {
94 +
            "description": "The agreed upon difficulty (or difficulty it's listed as in it's pack) for this level",
47 95
            "ref": "#difficulty",
48 96
            "type": "ref"
49 97
          },
50 98
          "name": {
51 99
            "description": "The name of a level",
52 100
            "maxGraphemes": 128,
53 101
            "maxLength": 1280,
54 102
            "minLength": 1,
55 103
            "type": "string"
56 104
          },
57 105
          "sid": {
58 -
            "description": "The level ID the game uses to identify",
106 +
            "description": "The level ID the game uses to identify this level",
59 107
            "maxGraphemes": 64,
60 108
            "maxLength": 640,
61 109
            "minLength": 1,
62 110
            "type": "string"
63 111
          }
64 112
        },
65 113
        "required": [
66 114
          "sid"
67 115
        ],
68 116
        "type": "object"
69 117
      },
70 118
      "type": "record"
71 119
    }
72 120
  },
73 121
  "id": "at.celest.temp.level",
74 122
  "lexicon": 1
75 123
}

Compare Other Versions

Lexicon Garden

@