io.atcr.hold.captain

atcr.io

Schema Diff

+3 -3

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, 3 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 (3)
  • 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") }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "io.atcr.hold.captain:body.provider", sort: "maxLength" }

Migration Guidance

Removed Elements

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

Added Elements

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

Constraint Changes

  • ConstraintRemoved ConstraintRemoved { vertex_id: "io.atcr.hold.captain:body.provider", sort: "maxLength" }

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

Compare Other Versions

Lexicon Garden

@