com.gamethesky.hatsoff.run

gamethesky.com

Schema Diff

+24 -3

From

CID
bafyreid4au2wiyo...
Indexed At
2026-10-11 04:07 UTC
View this version

To

CID
bafyreigi25e6ej2...
Indexed At
2026-10-11 06:03 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

1 breaking change, 3 non-breaking changes.

Breaking Changes (1)
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "com.gamethesky.hatsoff.run:body", src: "com.gamethesky.hatsoff.run:body", tgt: "com.gamethesky.hatsoff.run:body.level", kind: "prop", name: Some("level") }
Non-Breaking Changes (3)
  • AddedVertex AddedVertex { vertex_id: "com.gamethesky.hatsoff.run:body.level" }
  • AddedVertex AddedVertex { vertex_id: "com.gamethesky.hatsoff.run:body.rules" }
  • AddedEdge AddedEdge { src: "com.gamethesky.hatsoff.run:body", tgt: "com.gamethesky.hatsoff.run:body.rules", kind: "prop", name: Some("rules") }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "com.gamethesky.hatsoff.run:body.level" }
  • AddedVertex { vertex_id: "com.gamethesky.hatsoff.run:body.rules" }

Additional Notes

  • Breaking: RequiredEdgeAdded { vertex_id: "com.gamethesky.hatsoff.run:body", src: "com.gamethesky.hatsoff.run:body", tgt: "com.gamethesky.hatsoff.run:body.level", kind: "prop", name: Some("level") }
  • Non-breaking: AddedEdge { src: "com.gamethesky.hatsoff.run:body", tgt: "com.gamethesky.hatsoff.run:body.rules", kind: "prop", name: Some("rules") }
1 1
{
2 2
  "$type": "com.atproto.lexicon.schema",
3 3
  "defs": {
4 4
    "main": {
5 -
      "description": "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 reproduces the run exactly. Owning the record is the identity proof, and replaying it is the score proof — wave, cured and the rest are advisory and never trusted by a leaderboard.",
5 +
      "description": "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 the run exactly. Owning the record is the identity proof, and replaying it is the score proof — wave, cured and the rest are advisory and never trusted by a leaderboard.",
6 6
      "key": "tid",
7 7
      "record": {
8 8
        "properties": {
9 9
          "createdAt": {
10 10
            "format": "datetime",
11 11
            "type": "string"
12 12
          },
13 13
          "cured": {
14 14
            "description": "Advisory: hats removed.",
15 15
            "minimum": 0,
16 16
            "type": "integer"
17 17
          },
18 18
          "dawn": {
19 19
            "description": "Advisory: the night was won — the President's hat came off, or the night's cap was reached.",
20 20
            "type": "boolean"
21 21
          },
22 22
          "fires": {
23 -
            "description": "The whole run as the only input the game takes. Comma-separated `<dtick>.<weapon>.<x>.<z>` entries: dtick is 60 Hz ticks since the previous entry, weapon is 0 mist, 1 pulse, 2 drop, or 3 for giving up (the run ends on that entry; x and z are 0), x and z are the ground point in tenths of a unit (x east, z south, origin at the Washington Monument). Only shots the sim accepted are logged; a verifier applies the same rate, heat and cooldown rules and refuses a log that fires faster than they allow. Example: `120.0.-402.12,5.0.-398.14,30.1.-390.10`.",
23 +
            "description": "The whole run as the only input the game takes. Comma-separated `<dtick>.<weapon>.<x>.<z>` entries: dtick is 60 Hz ticks since the previous entry, weapon is 0 mist, 1 pulse, 2 drop, 3 for giving up (the run ends on that entry; x and z are 0), or 4 for a heading on an airlift level (x and z are then the direction in tenths, 0 and 0 to hover), x and z are otherwise the ground point in tenths of a unit (x east, z south, origin at the Washington Monument). Only shots the sim accepted are logged; a verifier applies the same rate, heat and cooldown rules and refuses a log that fires faster than they allow. Example: `120.0.-402.12,5.0.-398.14,30.1.-390.10`.",
24 24
            "maxLength": 400000,
25 25
            "type": "string"
26 26
          },
27 27
          "holdPeak": {
28 28
            "description": "Advisory: the most people sheltering at once.",
29 29
            "minimum": 0,
30 30
            "type": "integer"
31 31
          },
32 +
          "level": {
33 +
            "description": "The level the run was played on. Ids are append-only.",
34 +
            "knownValues": [
35 +
              "liberty",
36 +
              "goldengate",
37 +
              "alamo",
38 +
              "rushmore",
39 +
              "raid",
40 +
              "airlift",
41 +
              "mall",
42 +
              "whitehouse"
43 +
            ],
44 +
            "maxLength": 32,
45 +
            "type": "string"
46 +
          },
32 47
          "rehatted": {
33 48
            "description": "Advisory: cured people the horde caught again.",
34 49
            "minimum": 0,
35 50
            "type": "integer"
36 51
          },
52 +
          "rules": {
53 +
            "description": "The level's own rules version the run was played under. A verifier must replay under the matching version or refuse the run. Absent means 1.",
54 +
            "minimum": 1,
55 +
            "type": "integer"
56 +
          },
37 57
          "seed": {
38 58
            "description": "Which horde: a date (YYYY-MM-DD, local to the player) for the nightly horde, or any word for a practice one. The sim seeds from the FNV-1a hash of this string.",
39 59
            "maxLength": 64,
40 60
            "type": "string"
41 61
          },
42 62
          "simVersion": {
43 63
            "description": "Which rules produced these shots. A verifier must replay under the matching version or refuse the run.",
44 64
            "minimum": 1,
45 65
            "type": "integer"
46 66
          },
47 67
          "stage": {
48 -
            "description": "Advisory: the stage the run reached — 1 the Mall, 2 the White House. Stage numbers are append-only.",
68 +
            "description": "Deprecated: an earlier build's stage index. Superseded by level.",
49 69
            "minimum": 1,
50 70
            "type": "integer"
51 71
          },
52 72
          "ticks": {
53 73
            "description": "Advisory: the tick the steps fell.",
54 74
            "minimum": 1,
55 75
            "type": "integer"
56 76
          },
57 77
          "wave": {
58 78
            "description": "Advisory: the wave the steps fell in.",
59 79
            "minimum": 1,
60 80
            "type": "integer"
61 81
          }
62 82
        },
63 83
        "required": [
64 84
          "seed",
85 +
          "level",
65 86
          "simVersion",
66 87
          "fires",
67 88
          "wave",
68 89
          "cured",
69 90
          "createdAt"
70 91
        ],
71 92
        "type": "object"
72 93
      },
73 94
      "type": "record"
74 95
    }
75 96
  },
76 97
  "id": "com.gamethesky.hatsoff.run",
77 98
  "lexicon": 1
78 99
}

Compare Other Versions

Lexicon Garden

@