io.atcr.hold.captain

seamark.cr View official

Schema Diff

+5 -5

From

CID
bafyreibg3cq5gxh...
Indexed At
2026-02-18 19:28 UTC
View this version

To

CID
bafyreichjwhf6ug...
Indexed At
2026-03-21 14:38 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

2 breaking changes, 2 non-breaking changes.

Breaking Changes (2)
  • RemovedVertex RemovedVertex { vertex_id: "io.atcr.hold.captain:body.provider" }
  • RemovedEdge RemovedEdge { src: "io.atcr.hold.captain:body", tgt: "io.atcr.hold.captain:body.provider", kind: "prop", name: Some("provider") }
Non-Breaking Changes (2)
  • AddedVertex AddedVertex { vertex_id: "io.atcr.hold.captain:body.successor" }
  • AddedEdge AddedEdge { src: "io.atcr.hold.captain:body", tgt: "io.atcr.hold.captain:body.successor", kind: "prop", name: Some("successor") }

Migration Guidance

Removed Elements

  • RemovedVertex { vertex_id: "io.atcr.hold.captain:body.provider" }

Added Elements

  • AddedVertex { vertex_id: "io.atcr.hold.captain:body.successor" }

Additional Notes

  • Breaking: RemovedEdge { src: "io.atcr.hold.captain:body", tgt: "io.atcr.hold.captain:body.provider", kind: "prop", name: Some("provider") }
  • Non-breaking: AddedEdge { src: "io.atcr.hold.captain:body", tgt: "io.atcr.hold.captain:body.successor", kind: "prop", name: Some("successor") }
1 1
{
2 2
  "$type": "com.atproto.lexicon.schema",
3 3
  "defs": {
4 4
    "main": {
5 5
      "description": "Represents the hold's ownership and metadata. Stored as a singleton record at rkey 'self' in the hold's embedded PDS.",
6 6
      "key": "literal:self",
7 7
      "record": {
8 8
        "properties": {
9 9
          "allowAllCrew": {
10 10
            "description": "Allow any authenticated user to register as crew",
11 11
            "type": "boolean"
12 12
          },
13 13
          "deployedAt": {
14 14
            "description": "RFC3339 timestamp of when the hold was deployed",
15 15
            "format": "datetime",
16 16
            "type": "string"
17 17
          },
18 18
          "enableBlueskyPosts": {
19 19
            "description": "Enable Bluesky posts when manifests are pushed",
20 20
            "type": "boolean"
21 21
          },
22 22
          "owner": {
23 23
            "description": "DID of the hold owner",
24 24
            "format": "did",
25 25
            "type": "string"
26 26
          },
27 -
          "provider": {
28 -
            "description": "Deployment provider (e.g., fly.io, aws, etc.)",
29 -
            "maxLength": 64,
30 -
            "type": "string"
31 -
          },
32 27
          "public": {
33 28
            "description": "Whether this hold allows public blob reads (pulls) without authentication",
34 29
            "type": "boolean"
35 30
          },
36 31
          "region": {
37 32
            "description": "S3 region where blobs are stored",
38 33
            "maxLength": 64,
39 34
            "type": "string"
35 +
          },
36 +
          "successor": {
37 +
            "description": "DID of successor hold for migration redirect",
38 +
            "format": "did",
39 +
            "type": "string"
40 40
          }
41 41
        },
42 42
        "required": [
43 43
          "owner",
44 44
          "public",
45 45
          "allowAllCrew",
46 46
          "enableBlueskyPosts",
47 47
          "deployedAt"
48 48
        ],
49 49
        "type": "object"
50 50
      },
51 51
      "type": "record"
52 52
    }
53 53
  },
54 54
  "id": "io.atcr.hold.captain",
55 55
  "lexicon": 1
56 56
}

Compare Other Versions

Lexicon Garden

@