com.tomplanche.atkuzu.result

tomplanche.com

Schema Diff

+15 -1

From

CID
bafyreigfeveqxfl...
Indexed At
2026-09-04 14:48 UTC
View this version

To

CID
bafyreifjv4uu2cj...
Indexed At
2026-09-04 15:13 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

1 breaking change, 3 non-breaking changes.

Breaking Changes (1)
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "com.tomplanche.atkuzu.result:body", src: "com.tomplanche.atkuzu.result:body", tgt: "com.tomplanche.atkuzu.result:body.size", kind: "prop", name: Some("size") }
Non-Breaking Changes (3)
  • AddedVertex AddedVertex { vertex_id: "com.tomplanche.atkuzu.result:body.size" }
  • AddedVertex AddedVertex { vertex_id: "com.tomplanche.atkuzu.result:body.test" }
  • AddedEdge AddedEdge { src: "com.tomplanche.atkuzu.result:body", tgt: "com.tomplanche.atkuzu.result:body.test", kind: "prop", name: Some("test") }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "com.tomplanche.atkuzu.result:body.size" }
  • AddedVertex { vertex_id: "com.tomplanche.atkuzu.result:body.test" }

Additional Notes

  • Breaking: RequiredEdgeAdded { vertex_id: "com.tomplanche.atkuzu.result:body", src: "com.tomplanche.atkuzu.result:body", tgt: "com.tomplanche.atkuzu.result:body.size", kind: "prop", name: Some("size") }
  • Non-breaking: AddedEdge { src: "com.tomplanche.atkuzu.result:body", tgt: "com.tomplanche.atkuzu.result:body.test", kind: "prop", name: Some("test") }
1 1
{
2 2
  "$type": "com.atproto.lexicon.schema",
3 3
  "defs": {
4 4
    "main": {
5 -
      "description": "An immutable record of one completed atkuzu (Binairo/Takuzu) daily puzzle, written to the player's own PDS. Write-once: no field may change after creation. The record key is the puzzle number as a string (e.g. `412`), so each puzzle can be recorded at most once per account and re-solving cannot overwrite or spam.",
5 +
      "description": "An immutable record of one completed atkuzu (Binairo/Takuzu) daily puzzle, written to the player's own PDS. Write-once: no field may change after creation. The record key is `<puzzleNumber>-<size>` (e.g. `412-8`), so each size can be recorded at most once per puzzle day per account and re-solving cannot overwrite or spam.",
6 6
      "key": "any",
7 7
      "record": {
8 8
        "properties": {
9 9
          "createdAt": {
10 10
            "description": "When the player finished the puzzle and the record was created.",
11 11
            "format": "datetime",
12 12
            "type": "string"
13 13
          },
14 14
          "durationSeconds": {
15 15
            "description": "Time taken to finish the puzzle, in seconds.",
16 16
            "minimum": 0,
17 17
            "type": "integer"
18 18
          },
19 19
          "puzzleDate": {
20 20
            "description": "UTC midnight datetime of the puzzle's calendar day.",
21 21
            "format": "datetime",
22 22
            "type": "string"
23 23
          },
24 24
          "puzzleNumber": {
25 25
            "description": "Daily puzzle index = whole UTC days since the shared epoch, +1. Launch day = 1.",
26 26
            "minimum": 1,
27 27
            "type": "integer"
28 28
          },
29 +
          "size": {
30 +
            "description": "Board side length of the daily puzzle solved (6x6, 8x8, or 12x12); each size is its own record for a given day.",
31 +
            "enum": [
32 +
              6,
33 +
              8,
34 +
              12
35 +
            ],
36 +
            "type": "integer"
37 +
          },
29 38
          "solved": {
30 39
            "description": "Whether the player finished the puzzle (grid fully and correctly filled).",
31 40
            "type": "boolean"
32 41
          },
42 +
          "test": {
43 +
            "description": "True if this record was written while testing the write path, not a genuine daily completion. Absent (not `false`) on real records. Test records also use a `test-` rkey prefix so they never collide with a real puzzle's slot.",
44 +
            "type": "boolean"
45 +
          },
33 46
          "toggleCount": {
34 47
            "description": "Total number of cell toggles made during the attempt (including corrections). Optional efficiency stat, absent if not tracked.",
35 48
            "minimum": 0,
36 49
            "type": "integer"
37 50
          }
38 51
        },
39 52
        "required": [
40 53
          "puzzleNumber",
41 54
          "puzzleDate",
55 +
          "size",
42 56
          "solved",
43 57
          "durationSeconds",
44 58
          "createdAt"
45 59
        ],
46 60
        "type": "object"
47 61
      },
48 62
      "type": "record"
49 63
    }
50 64
  },
51 65
  "id": "com.tomplanche.atkuzu.result",
52 66
  "lexicon": 1
53 67
}

Compare Other Versions

Lexicon Garden

@