com.cultureblocs.creative.work

cultureblocs.com

Schema Diff

+3 -6

From

CID
bafyreihkecysu2a...
Indexed At
2026-08-15 16:40 UTC
View this version

To

CID
bafyreibzfr727j3...
Indexed At
2026-08-17 10:44 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

2 breaking changes, 2 non-breaking changes.

Breaking Changes (2)
  • KindChanged KindChanged { vertex_id: "com.cultureblocs.creative.work:body.images:items", old_kind: "blob", new_kind: "ref" }
  • ConstraintAdded ConstraintAdded { vertex_id: "com.cultureblocs.creative.work:body.images:items", sort: "ref", value: "com.cultureblocs.defs#imageRef" }
Non-Breaking Changes (2)
  • AddedVertex AddedVertex { vertex_id: "com.cultureblocs.defs#imageRef" }
  • AddedEdge AddedEdge { src: "com.cultureblocs.creative.work:body.images:items", tgt: "com.cultureblocs.defs#imageRef", kind: "ref", name: None }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "com.cultureblocs.defs#imageRef" }

Constraint Changes

  • ConstraintAdded ConstraintAdded { vertex_id: "com.cultureblocs.creative.work:body.images:items", sort: "ref", value: "com.cultureblocs.defs#imageRef" }

Additional Notes

  • Breaking: KindChanged { vertex_id: "com.cultureblocs.creative.work:body.images:items", old_kind: "blob", new_kind: "ref" }
  • Non-breaking: AddedEdge { src: "com.cultureblocs.creative.work:body.images:items", tgt: "com.cultureblocs.defs#imageRef", kind: "ref", name: None }
1 1
{
2 2
  "id": "com.cultureblocs.creative.work",
3 3
  "defs": {
4 4
    "main": {
5 5
      "key": "tid",
6 6
      "type": "record",
7 7
      "record": {
8 8
        "type": "object",
9 9
        "required": [
10 10
          "title",
11 11
          "createdAt"
12 12
        ],
13 13
        "properties": {
14 14
          "tags": {
15 15
            "type": "array",
16 16
            "items": {
17 17
              "type": "string",
18 18
              "maxGraphemes": 64
19 19
            },
20 20
            "maxLength": 8
21 21
          },
22 22
          "links": {
23 23
            "type": "array",
24 24
            "items": {
25 25
              "ref": "com.cultureblocs.defs#linkRef",
26 26
              "type": "ref"
27 27
            },
28 28
            "maxLength": 8,
29 29
            "description": "Other contexts for the work: press, a Flickr set, the Instagram post, a review."
30 30
          },
31 31
          "title": {
32 32
            "type": "string",
33 33
            "description": "Titles can change; history is preserved in repository commits.",
34 34
            "maxGraphemes": 300
35 35
          },
36 36
          "images": {
37 37
            "type": "array",
38 38
            "items": {
39 -
              "type": "blob",
40 -
              "accept": [
41 -
                "image/*"
42 -
              ],
43 -
              "maxSize": 2000000
39 +
              "ref": "com.cultureblocs.defs#imageRef",
40 +
              "type": "ref"
44 41
            },
45 42
            "maxLength": 10,
46 -
            "description": "The work itself, as published ATProto blobs (small / optionally watermarked). For image-based works this is the work, not metadata. Full-resolution originals need not leave the creator's machine."
43 +
            "description": "The work itself, as published images (small / optionally watermarked). For image-based works this is the work, not metadata. Full-resolution originals need not leave the creator's machine."
47 44
          },
48 45
          "credits": {
49 46
            "type": "array",
50 47
            "items": {
51 48
              "ref": "com.cultureblocs.defs#creditRef",
52 49
              "type": "ref"
53 50
            },
54 51
            "maxLength": 20,
55 52
            "description": "Self-asserted collaborators. Asymmetric by design: no approval inbox. If a collaborator publishes a matching claim, readers may compute a verified collaboration from the closed loop."
56 53
          },
57 54
          "createdAt": {
58 55
            "type": "string",
59 56
            "format": "datetime",
60 57
            "description": "When this record was first stamped. The only immutable field: everything else may be revised by publishing a new commit."
61 58
          },
62 59
          "description": {
63 60
            "type": "string",
64 61
            "maxGraphemes": 2000
65 62
          },
66 63
          "externalIds": {
67 64
            "type": "array",
68 65
            "items": {
69 66
              "ref": "com.cultureblocs.defs#externalId",
70 67
              "type": "ref"
71 68
            },
72 69
            "maxLength": 20,
73 70
            "description": "ISWC, ISRC, DOI, Wikidata and so on, once they exist. Registering them is a separate, often paid, workflow — this field is the hook a bridge service would write back into."
74 71
          },
75 72
          "referenceUrl": {
76 73
            "type": "string",
77 74
            "format": "uri",
78 75
            "description": "Where the work currently lives online — gallery page, Bandcamp, Instagram post, own site. Expected to change over a career."
79 76
          },
80 77
          "completionDate": {
81 78
            "type": "string",
82 79
            "description": "Freeform: '2024', 'Spring 2019', 'ongoing'. Not a datetime: creative chronology is rarely precise.",
83 80
            "maxGraphemes": 100
84 81
          }
85 82
        }
86 83
      },
87 84
      "description": "A minimal, self-asserted marker: 'I made this' / 'we made this'. Deliberately tiny. It proves that this claim was made on this date by the holder of this repository — nothing more, which is exactly the claim that can honestly be made. Everything else (industry metadata, scene layers, commercial registrations, licensing terms) belongs in other namespaces that REFERENCE this record's URI rather than adding fields to it."
88 85
    }
89 86
  },
90 87
  "$type": "com.atproto.lexicon.schema",
91 88
  "lexicon": 1
92 89
}

Compare Other Versions

Lexicon Garden

@