org.simocracy.interview
Schema Diff
+15 -0
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
}