xyz.quasigod.lab.letta.lock

quasigod.spaces-alpha.bsky.network

Schema Diff

+29 -23

From

CID
bafyreidxymz6n4u...
Indexed At
2026-08-24 16:12 UTC
View this version

To

CID
bafyreigo7tqwydp...
Indexed At
2026-08-25 19:16 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

10 breaking changes, 5 non-breaking changes.

Breaking Changes (10)
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "xyz.quasigod.lab.letta.lock:body", src: "xyz.quasigod.lab.letta.lock:body", tgt: "xyz.quasigod.lab.letta.lock:body.nonce", kind: "prop", name: Some("nonce") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "xyz.quasigod.lab.letta.lock:body", src: "xyz.quasigod.lab.letta.lock:body", tgt: "xyz.quasigod.lab.letta.lock:body.expiresAt", kind: "prop", name: Some("expiresAt") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "xyz.quasigod.lab.letta.lock:body", src: "xyz.quasigod.lab.letta.lock:body", tgt: "xyz.quasigod.lab.letta.lock:body.holder", kind: "prop", name: Some("holder") }
  • RequiredEdgeRemoved RequiredEdgeRemoved { vertex_id: "xyz.quasigod.lab.letta.lock", src: "xyz.quasigod.lab.letta.lock", tgt: "xyz.quasigod.lab.letta.lock.nonce", kind: "prop", name: Some("nonce") }
  • RequiredEdgeRemoved RequiredEdgeRemoved { vertex_id: "xyz.quasigod.lab.letta.lock", src: "xyz.quasigod.lab.letta.lock", tgt: "xyz.quasigod.lab.letta.lock.holder", kind: "prop", name: Some("holder") }
  • RequiredEdgeRemoved RequiredEdgeRemoved { vertex_id: "xyz.quasigod.lab.letta.lock", src: "xyz.quasigod.lab.letta.lock", tgt: "xyz.quasigod.lab.letta.lock.expiresAt", kind: "prop", name: Some("expiresAt") }
  • RemovedVertex RemovedVertex { vertex_id: "xyz.quasigod.lab.letta.lock.expiresAt" }
  • RemovedVertex RemovedVertex { vertex_id: "xyz.quasigod.lab.letta.lock.holder" }
  • RemovedVertex RemovedVertex { vertex_id: "xyz.quasigod.lab.letta.lock.nonce" }
  • KindChanged KindChanged { vertex_id: "xyz.quasigod.lab.letta.lock", old_kind: "object", new_kind: "record" }
Non-Breaking Changes (5)
  • AddedVertex AddedVertex { vertex_id: "xyz.quasigod.lab.letta.lock:body" }
  • AddedVertex AddedVertex { vertex_id: "xyz.quasigod.lab.letta.lock:body.expiresAt" }
  • AddedVertex AddedVertex { vertex_id: "xyz.quasigod.lab.letta.lock:body.holder" }
  • AddedVertex AddedVertex { vertex_id: "xyz.quasigod.lab.letta.lock:body.nonce" }
  • AddedEdge AddedEdge { src: "xyz.quasigod.lab.letta.lock", tgt: "xyz.quasigod.lab.letta.lock:body", kind: "record-schema", name: None }

Migration Guidance

Removed Elements

  • RemovedVertex { vertex_id: "xyz.quasigod.lab.letta.lock.expiresAt" }
  • RemovedVertex { vertex_id: "xyz.quasigod.lab.letta.lock.holder" }
  • RemovedVertex { vertex_id: "xyz.quasigod.lab.letta.lock.nonce" }

Added Elements

  • AddedVertex { vertex_id: "xyz.quasigod.lab.letta.lock:body" }
  • AddedVertex { vertex_id: "xyz.quasigod.lab.letta.lock:body.expiresAt" }
  • AddedVertex { vertex_id: "xyz.quasigod.lab.letta.lock:body.holder" }
  • AddedVertex { vertex_id: "xyz.quasigod.lab.letta.lock:body.nonce" }

Additional Notes

  • Breaking: RequiredEdgeAdded { vertex_id: "xyz.quasigod.lab.letta.lock:body", src: "xyz.quasigod.lab.letta.lock:body", tgt: "xyz.quasigod.lab.letta.lock:body.nonce", kind: "prop", name: Some("nonce") }
  • Breaking: RequiredEdgeAdded { vertex_id: "xyz.quasigod.lab.letta.lock:body", src: "xyz.quasigod.lab.letta.lock:body", tgt: "xyz.quasigod.lab.letta.lock:body.expiresAt", kind: "prop", name: Some("expiresAt") }
  • Breaking: RequiredEdgeAdded { vertex_id: "xyz.quasigod.lab.letta.lock:body", src: "xyz.quasigod.lab.letta.lock:body", tgt: "xyz.quasigod.lab.letta.lock:body.holder", kind: "prop", name: Some("holder") }
  • Breaking: RequiredEdgeRemoved { vertex_id: "xyz.quasigod.lab.letta.lock", src: "xyz.quasigod.lab.letta.lock", tgt: "xyz.quasigod.lab.letta.lock.nonce", kind: "prop", name: Some("nonce") }
  • Breaking: RequiredEdgeRemoved { vertex_id: "xyz.quasigod.lab.letta.lock", src: "xyz.quasigod.lab.letta.lock", tgt: "xyz.quasigod.lab.letta.lock.holder", kind: "prop", name: Some("holder") }
  • Breaking: RequiredEdgeRemoved { vertex_id: "xyz.quasigod.lab.letta.lock", src: "xyz.quasigod.lab.letta.lock", tgt: "xyz.quasigod.lab.letta.lock.expiresAt", kind: "prop", name: Some("expiresAt") }
  • Breaking: KindChanged { vertex_id: "xyz.quasigod.lab.letta.lock", old_kind: "object", new_kind: "record" }
  • Non-breaking: AddedEdge { src: "xyz.quasigod.lab.letta.lock", tgt: "xyz.quasigod.lab.letta.lock:body", kind: "record-schema", name: None }
1 1
{
2 2
  "id": "xyz.quasigod.lab.letta.lock",
3 3
  "defs": {
4 4
    "main": {
5 -
      "type": "object",
6 -
      "required": [
7 -
        "holder",
8 -
        "nonce",
9 -
        "expiresAt"
10 -
      ],
11 -
      "properties": {
12 -
        "nonce": {
13 -
          "type": "string",
14 -
          "maxLength": 64,
15 -
          "description": "Random value proving ownership; read back to confirm."
16 -
        },
17 -
        "holder": {
18 -
          "type": "string",
19 -
          "maxLength": 256,
20 -
          "description": "Identifier of the backend instance holding the lock."
21 -
        },
22 -
        "expiresAt": {
23 -
          "type": "string",
24 -
          "format": "datetime",
25 -
          "description": "TTL deadline; expired locks are treated as absent."
5 +
      "key": "literal:self",
6 +
      "type": "record",
7 +
      "record": {
8 +
        "type": "object",
9 +
        "required": [
10 +
          "holder",
11 +
          "nonce",
12 +
          "expiresAt"
13 +
        ],
14 +
        "properties": {
15 +
          "nonce": {
16 +
            "type": "string",
17 +
            "maxLength": 64,
18 +
            "description": "Random value proving ownership; read back to confirm the holder is still the writer before releasing."
19 +
          },
20 +
          "holder": {
21 +
            "type": "string",
22 +
            "maxLength": 256,
23 +
            "description": "Identifier of the backend instance holding the lock."
24 +
          },
25 +
          "expiresAt": {
26 +
            "type": "string",
27 +
            "format": "datetime",
28 +
            "description": "TTL deadline. A lock past its deadline is treated as a crashed writer and stolen."
29 +
          }
26 30
        }
27 -
      }
31 +
      },
32 +
      "description": "Held-writer lock record. Writers coordinate through this record: acquire (put), work, release (delete); an expired lock is stolen by the next writer. This is the in-process fast-path guard; cross-device safety against stray concurrent writes comes from per-record CAS (swapRecord) on data records."
28 33
    }
29 34
  },
30 35
  "$type": "com.atproto.lexicon.schema",
31 -
  "lexicon": 1
36 +
  "lexicon": 1,
37 +
  "description": "Advisory single-writer lock for the space. One instance per space, fixed rkey `self`."
32 38
}

Compare Other Versions

Lexicon Garden

@