org.simocracy.interview

gainforest.earth

Schema Diff

+15 -0

From

CID
bafyreib6v7jg55h...
Indexed At
2026-03-19 20:27 UTC
View this version

To

CID
bafyreicv5y63k65...
Indexed At
2026-04-24 18:20 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

2 breaking changes, 6 non-breaking changes.

Breaking Changes (2)
  • ConstraintAdded ConstraintAdded { vertex_id: "org.simocracy.interview#valueResponse.questionId", sort: "maxLength", value: "64" }
  • ConstraintAdded ConstraintAdded { vertex_id: "org.simocracy.interview#openAnswer.questionId", sort: "maxLength", value: "64" }
Non-Breaking Changes (6)
  • AddedVertex AddedVertex { vertex_id: "org.simocracy.interview#openAnswer.questionId" }
  • AddedVertex AddedVertex { vertex_id: "org.simocracy.interview#valueResponse.questionId" }
  • AddedVertex AddedVertex { vertex_id: "org.simocracy.interview:body.template" }
  • AddedEdge AddedEdge { src: "org.simocracy.interview#openAnswer", tgt: "org.simocracy.interview#openAnswer.questionId", kind: "prop", name: Some("questionId") }
  • AddedEdge AddedEdge { src: "org.simocracy.interview#valueResponse", tgt: "org.simocracy.interview#valueResponse.questionId", kind: "prop", name: Some("questionId") }
  • AddedEdge AddedEdge { src: "org.simocracy.interview:body", tgt: "org.simocracy.interview:body.template", kind: "prop", name: Some("template") }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "org.simocracy.interview#openAnswer.questionId" }
  • AddedVertex { vertex_id: "org.simocracy.interview#valueResponse.questionId" }
  • AddedVertex { vertex_id: "org.simocracy.interview:body.template" }

Constraint Changes

  • ConstraintAdded ConstraintAdded { vertex_id: "org.simocracy.interview#valueResponse.questionId", sort: "maxLength", value: "64" }
  • ConstraintAdded ConstraintAdded { vertex_id: "org.simocracy.interview#openAnswer.questionId", sort: "maxLength", value: "64" }

Additional Notes

  • Non-breaking: AddedEdge { src: "org.simocracy.interview#openAnswer", tgt: "org.simocracy.interview#openAnswer.questionId", kind: "prop", name: Some("questionId") }
  • Non-breaking: AddedEdge { src: "org.simocracy.interview#valueResponse", tgt: "org.simocracy.interview#valueResponse.questionId", kind: "prop", name: Some("questionId") }
  • Non-breaking: AddedEdge { src: "org.simocracy.interview:body", tgt: "org.simocracy.interview:body.template", kind: "prop", name: Some("template") }
1 1
{
2 2
  "id": "org.simocracy.interview",
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
          "sim",
11 11
          "openAnswers",
12 12
          "yesNoAnswers",
13 13
          "createdAt"
14 14
        ],
15 15
        "properties": {
16 16
          "sim": {
17 17
            "ref": "com.atproto.repo.strongRef",
18 18
            "type": "ref",
19 19
            "description": "Reference to the sim record this interview is about"
20 20
          },
21 +
          "template": {
22 +
            "ref": "com.atproto.repo.strongRef",
23 +
            "type": "ref",
24 +
            "description": "Optional reference to the template this interview answered."
25 +
          },
21 26
          "createdAt": {
22 27
            "type": "string",
23 28
            "format": "datetime",
24 29
            "description": "Timestamp when the interview was completed"
25 30
          },
26 31
          "openAnswers": {
27 32
            "type": "array",
28 33
            "items": {
29 34
              "ref": "#openAnswer",
30 35
              "type": "ref"
31 36
            },
32 37
            "description": "Open-ended question answers, transcribed from voice recordings."
33 38
          },
34 39
          "yesNoAnswers": {
35 40
            "type": "array",
36 41
            "items": {
37 42
              "ref": "#valueResponse",
38 43
              "type": "ref"
39 44
            },
40 45
            "description": "Yes/no value statement responses."
41 46
          }
42 47
        }
43 48
      },
44 49
      "description": "An interview transcript for a sim — captures voice answers and value positions to derive the sim's constitution and speaking style."
45 50
    },
46 51
    "openAnswer": {
47 52
      "type": "object",
48 53
      "required": [
49 54
        "question",
50 55
        "answer"
51 56
      ],
52 57
      "properties": {
53 58
        "answer": {
54 59
          "type": "string",
55 60
          "maxLength": 30000,
56 61
          "description": "The transcribed voice answer",
57 62
          "maxGraphemes": 3000
58 63
        },
59 64
        "question": {
60 65
          "type": "string",
61 66
          "maxLength": 1000,
62 67
          "description": "The interview question that was asked"
68 +
        },
69 +
        "questionId": {
70 +
          "type": "string",
71 +
          "maxLength": 64,
72 +
          "description": "Stable ID linking this answer to a question in the template."
63 73
        }
64 74
      },
65 75
      "description": "A single open-ended interview answer."
66 76
    },
67 77
    "valueResponse": {
68 78
      "type": "object",
69 79
      "required": [
70 80
        "statement",
71 81
        "answer"
72 82
      ],
73 83
      "properties": {
74 84
        "answer": {
75 85
          "type": "boolean",
76 86
          "description": "Whether the interviewee agreed (true) or disagreed (false)"
77 87
        },
78 88
        "statement": {
79 89
          "type": "string",
80 90
          "maxLength": 1000,
81 91
          "description": "The value statement presented"
92 +
        },
93 +
        "questionId": {
94 +
          "type": "string",
95 +
          "maxLength": 64,
96 +
          "description": "Stable ID linking this answer to a question in the template."
82 97
        }
83 98
      },
84 99
      "description": "A yes/no response to a value statement."
85 100
    }
86 101
  },
87 102
  "$type": "com.atproto.lexicon.schema",
88 103
  "lexicon": 1
89 104
}

Compare Other Versions

Lexicon Garden

@