@documentation-robotics/cli 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (169) hide show
  1. package/PYTHON_CLI_PARITY.md +265 -0
  2. package/PYTHON_CLI_STRUCTURE_UPDATE.md +246 -0
  3. package/README.md +926 -0
  4. package/biome.json +42 -0
  5. package/bunfig.toml +3 -0
  6. package/dist/ai/claude-client.js +71 -0
  7. package/dist/ai/claude-client.js.map +7 -0
  8. package/dist/ai/context-provider.js +129 -0
  9. package/dist/ai/context-provider.js.map +7 -0
  10. package/dist/ai/tools.js +231 -0
  11. package/dist/ai/tools.js.map +7 -0
  12. package/dist/cli.js +224 -0
  13. package/dist/cli.js.map +7 -0
  14. package/dist/commands/add.js +51 -0
  15. package/dist/commands/add.js.map +7 -0
  16. package/dist/commands/changeset.js +174 -0
  17. package/dist/commands/changeset.js.map +7 -0
  18. package/dist/commands/chat.js +111 -0
  19. package/dist/commands/chat.js.map +7 -0
  20. package/dist/commands/conformance.js +132 -0
  21. package/dist/commands/conformance.js.map +7 -0
  22. package/dist/commands/delete.js +31 -0
  23. package/dist/commands/delete.js.map +7 -0
  24. package/dist/commands/element.js +28 -0
  25. package/dist/commands/element.js.map +7 -0
  26. package/dist/commands/export.js +65 -0
  27. package/dist/commands/export.js.map +7 -0
  28. package/dist/commands/info.js +40 -0
  29. package/dist/commands/info.js.map +7 -0
  30. package/dist/commands/init.js +45 -0
  31. package/dist/commands/init.js.map +7 -0
  32. package/dist/commands/list.js +32 -0
  33. package/dist/commands/list.js.map +7 -0
  34. package/dist/commands/migrate.js +36 -0
  35. package/dist/commands/migrate.js.map +7 -0
  36. package/dist/commands/project.js +74 -0
  37. package/dist/commands/project.js.map +7 -0
  38. package/dist/commands/relationship.js +118 -0
  39. package/dist/commands/relationship.js.map +7 -0
  40. package/dist/commands/search.js +48 -0
  41. package/dist/commands/search.js.map +7 -0
  42. package/dist/commands/show.js +38 -0
  43. package/dist/commands/show.js.map +7 -0
  44. package/dist/commands/trace.js +60 -0
  45. package/dist/commands/trace.js.map +7 -0
  46. package/dist/commands/update.js +37 -0
  47. package/dist/commands/update.js.map +7 -0
  48. package/dist/commands/upgrade.js +152 -0
  49. package/dist/commands/upgrade.js.map +7 -0
  50. package/dist/commands/validate.js +71 -0
  51. package/dist/commands/validate.js.map +7 -0
  52. package/dist/commands/version.js +20 -0
  53. package/dist/commands/version.js.map +7 -0
  54. package/dist/commands/visualize.js +51 -0
  55. package/dist/commands/visualize.js.map +7 -0
  56. package/dist/core/active-changeset.js +52 -0
  57. package/dist/core/active-changeset.js.map +7 -0
  58. package/dist/core/changeset.js +244 -0
  59. package/dist/core/changeset.js.map +7 -0
  60. package/dist/core/dependency-tracker.js +322 -0
  61. package/dist/core/dependency-tracker.js.map +7 -0
  62. package/dist/core/element.js +65 -0
  63. package/dist/core/element.js.map +7 -0
  64. package/dist/core/layer.js +75 -0
  65. package/dist/core/layer.js.map +7 -0
  66. package/dist/core/manifest.js +57 -0
  67. package/dist/core/manifest.js.map +7 -0
  68. package/dist/core/migration-registry.js +131 -0
  69. package/dist/core/migration-registry.js.map +7 -0
  70. package/dist/core/model.js +455 -0
  71. package/dist/core/model.js.map +7 -0
  72. package/dist/core/projection-engine.js +288 -0
  73. package/dist/core/projection-engine.js.map +7 -0
  74. package/dist/core/reference-registry.js +188 -0
  75. package/dist/core/reference-registry.js.map +7 -0
  76. package/dist/core/relationship-registry.js +114 -0
  77. package/dist/core/relationship-registry.js.map +7 -0
  78. package/dist/core/relationships.js +78 -0
  79. package/dist/core/relationships.js.map +7 -0
  80. package/dist/export/archimate-exporter.js +111 -0
  81. package/dist/export/archimate-exporter.js.map +7 -0
  82. package/dist/export/export-manager.js +63 -0
  83. package/dist/export/export-manager.js.map +7 -0
  84. package/dist/export/graphml-exporter.js +39 -0
  85. package/dist/export/graphml-exporter.js.map +7 -0
  86. package/dist/export/index.js +17 -0
  87. package/dist/export/index.js.map +7 -0
  88. package/dist/export/json-schema-exporter.js +60 -0
  89. package/dist/export/json-schema-exporter.js.map +7 -0
  90. package/dist/export/markdown-exporter.js +99 -0
  91. package/dist/export/markdown-exporter.js.map +7 -0
  92. package/dist/export/openapi-exporter.js +85 -0
  93. package/dist/export/openapi-exporter.js.map +7 -0
  94. package/dist/export/plantuml-exporter.js +60 -0
  95. package/dist/export/plantuml-exporter.js.map +7 -0
  96. package/dist/export/types.js +36 -0
  97. package/dist/export/types.js.map +7 -0
  98. package/dist/schemas/bundled/01-motivation-layer.schema.json +942 -0
  99. package/dist/schemas/bundled/02-business-layer.schema.json +1293 -0
  100. package/dist/schemas/bundled/03-security-layer.schema.json +2177 -0
  101. package/dist/schemas/bundled/04-application-layer.schema.json +1328 -0
  102. package/dist/schemas/bundled/05-technology-layer.schema.json +1465 -0
  103. package/dist/schemas/bundled/06-api-layer.schema.json +1743 -0
  104. package/dist/schemas/bundled/07-data-model-layer.schema.json +1253 -0
  105. package/dist/schemas/bundled/08-datastore-layer.schema.json +892 -0
  106. package/dist/schemas/bundled/09-ux-layer.schema.json +1506 -0
  107. package/dist/schemas/bundled/10-navigation-layer.schema.json +843 -0
  108. package/dist/schemas/bundled/11-apm-observability-layer.schema.json +1430 -0
  109. package/dist/schemas/bundled/12-testing-layer.schema.json +1091 -0
  110. package/dist/schemas/bundled/common/layer-extensions.schema.json +266 -0
  111. package/dist/schemas/bundled/common/predicates.schema.json +493 -0
  112. package/dist/schemas/bundled/common/relationships.schema.json +791 -0
  113. package/dist/schemas/bundled/common/source-references.schema.json +71 -0
  114. package/dist/schemas/bundled/link-registry.json +1839 -0
  115. package/dist/schemas/bundled/link-registry.schema.json +339 -0
  116. package/dist/schemas/bundled/relationship-catalog.json +1302 -0
  117. package/dist/schemas/bundled/relationship-type.schema.json +221 -0
  118. package/dist/server/server.js +1207 -0
  119. package/dist/server/server.js.map +7 -0
  120. package/dist/server/telemetry-middleware.js +24 -0
  121. package/dist/server/telemetry-middleware.js.map +7 -0
  122. package/dist/telemetry/console-interceptor.js +34 -0
  123. package/dist/telemetry/console-interceptor.js.map +7 -0
  124. package/dist/telemetry/index.js +54 -0
  125. package/dist/telemetry/index.js.map +7 -0
  126. package/dist/telemetry/resilient-exporter.js +41 -0
  127. package/dist/telemetry/resilient-exporter.js.map +7 -0
  128. package/dist/telemetry/resilient-log-exporter.js +41 -0
  129. package/dist/telemetry/resilient-log-exporter.js.map +7 -0
  130. package/dist/telemetry/test-instrumentation.js +32 -0
  131. package/dist/telemetry/test-instrumentation.js.map +7 -0
  132. package/dist/types/index.js +1 -0
  133. package/dist/types/index.js.map +7 -0
  134. package/dist/utils/element-utils.js +11 -0
  135. package/dist/utils/element-utils.js.map +7 -0
  136. package/dist/utils/errors.js +105 -0
  137. package/dist/utils/errors.js.map +7 -0
  138. package/dist/utils/file-io.js +69 -0
  139. package/dist/utils/file-io.js.map +7 -0
  140. package/dist/utils/globals.js +28 -0
  141. package/dist/utils/globals.js.map +7 -0
  142. package/dist/utils/model-path.js +22 -0
  143. package/dist/utils/model-path.js.map +7 -0
  144. package/dist/utils/project-paths.js +45 -0
  145. package/dist/utils/project-paths.js.map +7 -0
  146. package/dist/utils/spec-installer.js +85 -0
  147. package/dist/utils/spec-installer.js.map +7 -0
  148. package/dist/utils/spec-version.js +33 -0
  149. package/dist/utils/spec-version.js.map +7 -0
  150. package/dist/validators/index.js +15 -0
  151. package/dist/validators/index.js.map +7 -0
  152. package/dist/validators/naming-validator.js +82 -0
  153. package/dist/validators/naming-validator.js.map +7 -0
  154. package/dist/validators/reference-validator.js +106 -0
  155. package/dist/validators/reference-validator.js.map +7 -0
  156. package/dist/validators/schema-validator.js +148 -0
  157. package/dist/validators/schema-validator.js.map +7 -0
  158. package/dist/validators/semantic-validator.js +80 -0
  159. package/dist/validators/semantic-validator.js.map +7 -0
  160. package/dist/validators/types.js +48 -0
  161. package/dist/validators/types.js.map +7 -0
  162. package/dist/validators/validator.js +67 -0
  163. package/dist/validators/validator.js.map +7 -0
  164. package/docs/TEST-INSTRUMENTATION.md +405 -0
  165. package/docs/telemetry.md +427 -0
  166. package/package.json +70 -0
  167. package/test-debug.js +33 -0
  168. package/test-special.mjs +46 -0
  169. package/test_runner.ts +7 -0
@@ -0,0 +1,942 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://example.com/schemas/01-motivation-layer.schema.json",
4
+ "title": "Motivation Layer Layer Schema",
5
+ "description": "Captures stakeholder concerns, goals, requirements, and constraints that drive architectural decisions using ArchiMate motivation elements.",
6
+ "layerMetadata": {
7
+ "layerId": "01-motivation-layer",
8
+ "layerName": "Motivation Layer",
9
+ "intraLayerRelationshipSupport": true,
10
+ "crossLayerRelationshipSupport": true,
11
+ "relationshipCatalogVersion": "2.1.0"
12
+ },
13
+ "intraLayerRelationships": {
14
+ "$comment": "Relationships between entities within this layer. References relationship-catalog.json by ID.",
15
+ "allowed": [
16
+ {
17
+ "relationshipTypeId": "aggregation",
18
+ "sourceTypes": ["Goal", "Requirement"],
19
+ "targetTypes": ["Goal", "Requirement"],
20
+ "examples": [
21
+ {
22
+ "source": "Goal",
23
+ "target": "Goal",
24
+ "description": "High-level goal aggregates sub-goals",
25
+ "layer": "01-motivation"
26
+ },
27
+ {
28
+ "source": "Requirement",
29
+ "target": "Requirement",
30
+ "description": "High-level requirement aggregates detailed requirements",
31
+ "layer": "01-motivation"
32
+ }
33
+ ]
34
+ },
35
+ {
36
+ "relationshipTypeId": "specialization",
37
+ "sourceTypes": ["PremiumAccount", "Schema"],
38
+ "targetTypes": ["Account", "Schema"],
39
+ "examples": [
40
+ {
41
+ "source": "PremiumAccount",
42
+ "target": "Account",
43
+ "description": "Premium account specializes the general account concept"
44
+ },
45
+ {
46
+ "source": "Schema",
47
+ "target": "Schema",
48
+ "description": "API schema specializes another via allOf/oneOf/anyOf composition",
49
+ "layer": "06-api"
50
+ }
51
+ ]
52
+ },
53
+ {
54
+ "relationshipTypeId": "realization",
55
+ "sourceTypes": ["Goal", "Outcome"],
56
+ "targetTypes": ["Goal", "Value"],
57
+ "examples": [
58
+ {
59
+ "source": "Goal",
60
+ "target": "Value",
61
+ "description": "Goal realizes value for stakeholders",
62
+ "layer": "01-motivation"
63
+ },
64
+ {
65
+ "source": "Outcome",
66
+ "target": "Goal",
67
+ "description": "Outcome realizes achievement of goal",
68
+ "layer": "01-motivation"
69
+ }
70
+ ]
71
+ },
72
+ {
73
+ "relationshipTypeId": "association",
74
+ "sourceTypes": ["Meaning", "Outcome", "Requirement", "Stakeholder", "Value"],
75
+ "targetTypes": ["Constraint", "Driver", "Goal", "Outcome", "Stakeholder", "Value"],
76
+ "examples": [
77
+ {
78
+ "source": "Stakeholder",
79
+ "target": "Driver",
80
+ "description": "Stakeholder has concern represented by driver",
81
+ "layer": "01-motivation"
82
+ },
83
+ {
84
+ "source": "Stakeholder",
85
+ "target": "Goal",
86
+ "description": "Stakeholder has interest in goal",
87
+ "layer": "01-motivation"
88
+ },
89
+ {
90
+ "source": "Requirement",
91
+ "target": "Constraint",
92
+ "description": "Requirement is limited by constraint",
93
+ "layer": "01-motivation"
94
+ }
95
+ ]
96
+ },
97
+ {
98
+ "relationshipTypeId": "influence",
99
+ "sourceTypes": ["Assessment", "Constraint", "Driver", "Goal", "Principle"],
100
+ "targetTypes": ["Assessment", "Goal", "Principle", "Requirement"],
101
+ "examples": [
102
+ {
103
+ "source": "Driver",
104
+ "target": "Assessment",
105
+ "description": "Driver creates need for assessment",
106
+ "layer": "01-motivation"
107
+ },
108
+ {
109
+ "source": "Driver",
110
+ "target": "Goal",
111
+ "description": "Driver motivates goal definition",
112
+ "layer": "01-motivation"
113
+ },
114
+ {
115
+ "source": "Assessment",
116
+ "target": "Goal",
117
+ "description": "Assessment informs goal setting",
118
+ "layer": "01-motivation"
119
+ }
120
+ ]
121
+ }
122
+ ]
123
+ },
124
+ "crossLayerRelationships": {
125
+ "$comment": "Relationships to/from entities in other layers",
126
+ "outgoing": [],
127
+ "incoming": [
128
+ {
129
+ "id": "motivation-constrained-by",
130
+ "predicate": "constrains",
131
+ "inversePredicate": "constrained-by",
132
+ "sourceLayer": "05-technology",
133
+ "sourceTypes": [
134
+ "Artifact",
135
+ "CommunicationNetwork",
136
+ "Node",
137
+ "SystemSoftware",
138
+ "TechnologyService"
139
+ ],
140
+ "targetTypes": ["ConstrainedBy"],
141
+ "fieldPath": "motivation.constrained-by",
142
+ "cardinality": "array",
143
+ "description": "Inverse of: string[] (Constraint IDs for regulatory/compliance, optional)"
144
+ },
145
+ {
146
+ "id": "motivation-constrained-by",
147
+ "predicate": "constrains",
148
+ "inversePredicate": "constrained-by",
149
+ "sourceLayer": "06-api",
150
+ "sourceTypes": ["Operation", "SecurityScheme"],
151
+ "targetTypes": ["ConstrainedBy"],
152
+ "fieldPath": "motivation.constrained-by",
153
+ "cardinality": "array",
154
+ "description": "Inverse of: string[] (Constraint IDs for regulatory/compliance, optional)"
155
+ },
156
+ {
157
+ "id": "motivation-delivers-value",
158
+ "predicate": "delivered-by",
159
+ "inversePredicate": "delivers-value",
160
+ "sourceLayer": "02-business",
161
+ "sourceTypes": ["BusinessService"],
162
+ "targetTypes": ["DeliversValue"],
163
+ "fieldPath": "motivation.delivers-value",
164
+ "cardinality": "array",
165
+ "description": "Inverse of: BusinessService delivers Value"
166
+ },
167
+ {
168
+ "id": "motivation-delivers-value",
169
+ "predicate": "delivered-by",
170
+ "inversePredicate": "delivers-value",
171
+ "sourceLayer": "04-application",
172
+ "sourceTypes": ["ApplicationService"],
173
+ "targetTypes": ["DeliversValue"],
174
+ "fieldPath": "motivation.delivers-value",
175
+ "cardinality": "array",
176
+ "description": "Inverse of: BusinessService delivers Value"
177
+ },
178
+ {
179
+ "id": "motivation-fulfills-requirements",
180
+ "predicate": "fulfilled-by",
181
+ "inversePredicate": "fulfills-requirements",
182
+ "sourceLayer": "04-application",
183
+ "sourceTypes": ["ApplicationFunction"],
184
+ "targetTypes": ["FulfillsRequirement"],
185
+ "fieldPath": "motivation.fulfills-requirements",
186
+ "cardinality": "array",
187
+ "description": "Inverse of: comma-separated Requirement IDs this function fulfills"
188
+ },
189
+ {
190
+ "id": "motivation-fulfills-requirements",
191
+ "predicate": "fulfilled-by",
192
+ "inversePredicate": "fulfills-requirements",
193
+ "sourceLayer": "05-technology",
194
+ "sourceTypes": ["CommunicationNetwork", "Node", "SystemSoftware"],
195
+ "targetTypes": ["FulfillsRequirement"],
196
+ "fieldPath": "motivation.fulfills-requirements",
197
+ "cardinality": "array",
198
+ "description": "Inverse of: comma-separated Requirement IDs this function fulfills"
199
+ },
200
+ {
201
+ "id": "motivation-fulfills-requirements",
202
+ "predicate": "fulfilled-by",
203
+ "inversePredicate": "fulfills-requirements",
204
+ "sourceLayer": "06-api",
205
+ "sourceTypes": ["Operation", "SecurityScheme"],
206
+ "targetTypes": ["FulfillsRequirement"],
207
+ "fieldPath": "motivation.fulfills-requirements",
208
+ "cardinality": "array",
209
+ "description": "Inverse of: comma-separated Requirement IDs this function fulfills"
210
+ },
211
+ {
212
+ "id": "motivation-governed-by-principles",
213
+ "predicate": "governs",
214
+ "inversePredicate": "governed-by-principles",
215
+ "sourceLayer": "02-business",
216
+ "sourceTypes": ["BusinessService"],
217
+ "targetTypes": ["GovernedByPrinciple"],
218
+ "fieldPath": "motivation.governed-by-principles",
219
+ "cardinality": "array",
220
+ "description": "Inverse of: BusinessService governed by Principles"
221
+ },
222
+ {
223
+ "id": "motivation-governed-by-principles",
224
+ "predicate": "governs",
225
+ "inversePredicate": "governed-by-principles",
226
+ "sourceLayer": "03-security",
227
+ "sourceTypes": ["BusinessService"],
228
+ "targetTypes": ["GovernedByPrinciple"],
229
+ "fieldPath": "motivation.governed-by-principles",
230
+ "cardinality": "array",
231
+ "description": "Inverse of: BusinessService governed by Principles"
232
+ },
233
+ {
234
+ "id": "motivation-governed-by-principles",
235
+ "predicate": "governs",
236
+ "inversePredicate": "governed-by-principles",
237
+ "sourceLayer": "04-application",
238
+ "sourceTypes": ["ApplicationFunction", "ApplicationService"],
239
+ "targetTypes": ["GovernedByPrinciple"],
240
+ "fieldPath": "motivation.governed-by-principles",
241
+ "cardinality": "array",
242
+ "description": "Inverse of: BusinessService governed by Principles"
243
+ },
244
+ {
245
+ "id": "motivation-governed-by-principles",
246
+ "predicate": "governs",
247
+ "inversePredicate": "governed-by-principles",
248
+ "sourceLayer": "05-technology",
249
+ "sourceTypes": ["CommunicationNetwork", "Node", "SystemSoftware", "TechnologyService"],
250
+ "targetTypes": ["GovernedByPrinciple"],
251
+ "fieldPath": "motivation.governed-by-principles",
252
+ "cardinality": "array",
253
+ "description": "Inverse of: BusinessService governed by Principles"
254
+ },
255
+ {
256
+ "id": "motivation-governed-by-principles",
257
+ "predicate": "governs",
258
+ "inversePredicate": "governed-by-principles",
259
+ "sourceLayer": "06-api",
260
+ "sourceTypes": ["OpenAPIDocument", "Operation", "SecurityScheme"],
261
+ "targetTypes": ["GovernedByPrinciple"],
262
+ "fieldPath": "motivation.governed-by-principles",
263
+ "cardinality": "array",
264
+ "description": "Inverse of: BusinessService governed by Principles"
265
+ },
266
+ {
267
+ "id": "motivation-governed-by-principles",
268
+ "predicate": "governs",
269
+ "inversePredicate": "governed-by-principles",
270
+ "sourceLayer": "07-data-model",
271
+ "sourceTypes": ["BusinessService"],
272
+ "targetTypes": ["GovernedByPrinciple"],
273
+ "fieldPath": "motivation.governed-by-principles",
274
+ "cardinality": "array",
275
+ "description": "Inverse of: BusinessService governed by Principles"
276
+ },
277
+ {
278
+ "id": "motivation-governed-by-principles",
279
+ "predicate": "governs",
280
+ "inversePredicate": "governed-by-principles",
281
+ "sourceLayer": "08-datastore",
282
+ "sourceTypes": ["BusinessService"],
283
+ "targetTypes": ["GovernedByPrinciple"],
284
+ "fieldPath": "motivation.governed-by-principles",
285
+ "cardinality": "array",
286
+ "description": "Inverse of: BusinessService governed by Principles"
287
+ },
288
+ {
289
+ "id": "motivation-governed-by-principles",
290
+ "predicate": "governs",
291
+ "inversePredicate": "governed-by-principles",
292
+ "sourceLayer": "09-ux",
293
+ "sourceTypes": ["BusinessService"],
294
+ "targetTypes": ["GovernedByPrinciple"],
295
+ "fieldPath": "motivation.governed-by-principles",
296
+ "cardinality": "array",
297
+ "description": "Inverse of: BusinessService governed by Principles"
298
+ },
299
+ {
300
+ "id": "motivation-governed-by-principles",
301
+ "predicate": "governs",
302
+ "inversePredicate": "governed-by-principles",
303
+ "sourceLayer": "10-navigation",
304
+ "sourceTypes": ["BusinessService"],
305
+ "targetTypes": ["GovernedByPrinciple"],
306
+ "fieldPath": "motivation.governed-by-principles",
307
+ "cardinality": "array",
308
+ "description": "Inverse of: BusinessService governed by Principles"
309
+ },
310
+ {
311
+ "id": "motivation-governed-by-principles",
312
+ "predicate": "governs",
313
+ "inversePredicate": "governed-by-principles",
314
+ "sourceLayer": "11-apm-observability",
315
+ "sourceTypes": ["BusinessService"],
316
+ "targetTypes": ["GovernedByPrinciple"],
317
+ "fieldPath": "motivation.governed-by-principles",
318
+ "cardinality": "array",
319
+ "description": "Inverse of: BusinessService governed by Principles"
320
+ },
321
+ {
322
+ "id": "motivation-governed-by-principles",
323
+ "predicate": "governs",
324
+ "inversePredicate": "governed-by-principles",
325
+ "sourceLayer": "12-testing",
326
+ "sourceTypes": ["BusinessService"],
327
+ "targetTypes": ["GovernedByPrinciple"],
328
+ "fieldPath": "motivation.governed-by-principles",
329
+ "cardinality": "array",
330
+ "description": "Inverse of: BusinessService governed by Principles"
331
+ },
332
+ {
333
+ "id": "motivation-supports-goals",
334
+ "predicate": "supported-by",
335
+ "inversePredicate": "supports-goals",
336
+ "sourceLayer": "02-business",
337
+ "sourceTypes": ["BusinessService"],
338
+ "targetTypes": ["SupportsGoal"],
339
+ "fieldPath": "motivation.supports-goals",
340
+ "cardinality": "array",
341
+ "description": "Inverse of: BusinessService supports Goals"
342
+ },
343
+ {
344
+ "id": "motivation-supports-goals",
345
+ "predicate": "supported-by",
346
+ "inversePredicate": "supports-goals",
347
+ "sourceLayer": "03-security",
348
+ "sourceTypes": ["BusinessService"],
349
+ "targetTypes": ["SupportsGoal"],
350
+ "fieldPath": "motivation.supports-goals",
351
+ "cardinality": "array",
352
+ "description": "Inverse of: BusinessService supports Goals"
353
+ },
354
+ {
355
+ "id": "motivation-supports-goals",
356
+ "predicate": "supported-by",
357
+ "inversePredicate": "supports-goals",
358
+ "sourceLayer": "04-application",
359
+ "sourceTypes": ["ApplicationService"],
360
+ "targetTypes": ["SupportsGoal"],
361
+ "fieldPath": "motivation.supports-goals",
362
+ "cardinality": "array",
363
+ "description": "Inverse of: BusinessService supports Goals"
364
+ },
365
+ {
366
+ "id": "motivation-supports-goals",
367
+ "predicate": "supported-by",
368
+ "inversePredicate": "supports-goals",
369
+ "sourceLayer": "05-technology",
370
+ "sourceTypes": ["TechnologyService"],
371
+ "targetTypes": ["SupportsGoal"],
372
+ "fieldPath": "motivation.supports-goals",
373
+ "cardinality": "array",
374
+ "description": "Inverse of: BusinessService supports Goals"
375
+ },
376
+ {
377
+ "id": "motivation-supports-goals",
378
+ "predicate": "supported-by",
379
+ "inversePredicate": "supports-goals",
380
+ "sourceLayer": "06-api",
381
+ "sourceTypes": ["Operation", "SecurityScheme"],
382
+ "targetTypes": ["SupportsGoal"],
383
+ "fieldPath": "motivation.supports-goals",
384
+ "cardinality": "array",
385
+ "description": "Inverse of: BusinessService supports Goals"
386
+ },
387
+ {
388
+ "id": "motivation-supports-goals",
389
+ "predicate": "supported-by",
390
+ "inversePredicate": "supports-goals",
391
+ "sourceLayer": "07-data-model",
392
+ "sourceTypes": ["BusinessService"],
393
+ "targetTypes": ["SupportsGoal"],
394
+ "fieldPath": "motivation.supports-goals",
395
+ "cardinality": "array",
396
+ "description": "Inverse of: BusinessService supports Goals"
397
+ },
398
+ {
399
+ "id": "motivation-supports-goals",
400
+ "predicate": "supported-by",
401
+ "inversePredicate": "supports-goals",
402
+ "sourceLayer": "08-datastore",
403
+ "sourceTypes": ["BusinessService"],
404
+ "targetTypes": ["SupportsGoal"],
405
+ "fieldPath": "motivation.supports-goals",
406
+ "cardinality": "array",
407
+ "description": "Inverse of: BusinessService supports Goals"
408
+ },
409
+ {
410
+ "id": "motivation-supports-goals",
411
+ "predicate": "supported-by",
412
+ "inversePredicate": "supports-goals",
413
+ "sourceLayer": "09-ux",
414
+ "sourceTypes": ["BusinessService"],
415
+ "targetTypes": ["SupportsGoal"],
416
+ "fieldPath": "motivation.supports-goals",
417
+ "cardinality": "array",
418
+ "description": "Inverse of: BusinessService supports Goals"
419
+ },
420
+ {
421
+ "id": "motivation-supports-goals",
422
+ "predicate": "supported-by",
423
+ "inversePredicate": "supports-goals",
424
+ "sourceLayer": "10-navigation",
425
+ "sourceTypes": ["BusinessService"],
426
+ "targetTypes": ["SupportsGoal"],
427
+ "fieldPath": "motivation.supports-goals",
428
+ "cardinality": "array",
429
+ "description": "Inverse of: BusinessService supports Goals"
430
+ },
431
+ {
432
+ "id": "motivation-supports-goals",
433
+ "predicate": "supported-by",
434
+ "inversePredicate": "supports-goals",
435
+ "sourceLayer": "11-apm-observability",
436
+ "sourceTypes": ["BusinessService"],
437
+ "targetTypes": ["SupportsGoal"],
438
+ "fieldPath": "motivation.supports-goals",
439
+ "cardinality": "array",
440
+ "description": "Inverse of: BusinessService supports Goals"
441
+ },
442
+ {
443
+ "id": "motivation-supports-goals",
444
+ "predicate": "supported-by",
445
+ "inversePredicate": "supports-goals",
446
+ "sourceLayer": "12-testing",
447
+ "sourceTypes": ["BusinessService"],
448
+ "targetTypes": ["SupportsGoal"],
449
+ "fieldPath": "motivation.supports-goals",
450
+ "cardinality": "array",
451
+ "description": "Inverse of: BusinessService supports Goals"
452
+ }
453
+ ]
454
+ },
455
+ "type": "object",
456
+ "properties": {
457
+ "stakeholders": {
458
+ "type": "array",
459
+ "description": "Collection of Stakeholder entities",
460
+ "items": {
461
+ "$ref": "#/definitions/Stakeholder"
462
+ }
463
+ },
464
+ "drivers": {
465
+ "type": "array",
466
+ "description": "Collection of Driver entities",
467
+ "items": {
468
+ "$ref": "#/definitions/Driver"
469
+ }
470
+ },
471
+ "assessments": {
472
+ "type": "array",
473
+ "description": "Collection of Assessment entities",
474
+ "items": {
475
+ "$ref": "#/definitions/Assessment"
476
+ }
477
+ },
478
+ "goals": {
479
+ "type": "array",
480
+ "description": "Collection of Goal entities",
481
+ "items": {
482
+ "$ref": "#/definitions/Goal"
483
+ }
484
+ },
485
+ "outcomes": {
486
+ "type": "array",
487
+ "description": "Collection of Outcome entities",
488
+ "items": {
489
+ "$ref": "#/definitions/Outcome"
490
+ }
491
+ },
492
+ "principles": {
493
+ "type": "array",
494
+ "description": "Collection of Principle entities",
495
+ "items": {
496
+ "$ref": "#/definitions/Principle"
497
+ }
498
+ },
499
+ "requirements": {
500
+ "type": "array",
501
+ "description": "Collection of Requirement entities",
502
+ "items": {
503
+ "$ref": "#/definitions/Requirement"
504
+ }
505
+ },
506
+ "constraints": {
507
+ "type": "array",
508
+ "description": "Collection of Constraint entities",
509
+ "items": {
510
+ "$ref": "#/definitions/Constraint"
511
+ }
512
+ },
513
+ "meanings": {
514
+ "type": "array",
515
+ "description": "Collection of Meaning entities",
516
+ "items": {
517
+ "$ref": "#/definitions/Meaning"
518
+ }
519
+ },
520
+ "values": {
521
+ "type": "array",
522
+ "description": "Collection of Value entities",
523
+ "items": {
524
+ "$ref": "#/definitions/Value"
525
+ }
526
+ }
527
+ },
528
+ "definitions": {
529
+ "StakeholderType": {
530
+ "type": "string",
531
+ "enum": ["internal", "external", "customer", "partner", "regulator"]
532
+ },
533
+ "DriverCategory": {
534
+ "type": "string",
535
+ "enum": ["market", "regulatory", "technology", "competitive", "operational", "strategic"]
536
+ },
537
+ "AssessmentType": {
538
+ "type": "string",
539
+ "enum": ["strength", "weakness", "opportunity", "threat", "risk", "gap"]
540
+ },
541
+ "Priority": {
542
+ "type": "string",
543
+ "enum": ["critical", "high", "medium", "low"]
544
+ },
545
+ "OutcomeStatus": {
546
+ "type": "string",
547
+ "enum": ["planned", "in-progress", "achieved", "not-achieved"]
548
+ },
549
+ "PrincipleCategory": {
550
+ "type": "string",
551
+ "enum": ["business", "data", "application", "technology", "security", "integration"]
552
+ },
553
+ "RequirementType": {
554
+ "type": "string",
555
+ "enum": ["functional", "non-functional", "business", "technical", "compliance", "user"]
556
+ },
557
+ "ConstraintType": {
558
+ "type": "string",
559
+ "enum": ["budget", "time", "technology", "regulatory", "organizational", "resource"]
560
+ },
561
+ "ValueType": {
562
+ "type": "string",
563
+ "enum": ["financial", "customer", "operational", "strategic", "social"]
564
+ },
565
+ "Stakeholder": {
566
+ "type": "object",
567
+ "description": "Individual, team, or organization with interest in the outcome",
568
+ "required": ["id", "name", "type"],
569
+ "properties": {
570
+ "id": {
571
+ "type": "string",
572
+ "format": "uuid",
573
+ "minLength": 1
574
+ },
575
+ "name": {
576
+ "type": "string",
577
+ "minLength": 1
578
+ },
579
+ "documentation": {
580
+ "type": "string",
581
+ "minLength": 1
582
+ },
583
+ "type": {
584
+ "$ref": "#/definitions/StakeholderType"
585
+ }
586
+ }
587
+ },
588
+ "Driver": {
589
+ "type": "object",
590
+ "description": "External or internal condition that motivates an organization",
591
+ "required": ["id", "name", "category"],
592
+ "properties": {
593
+ "id": {
594
+ "type": "string",
595
+ "format": "uuid",
596
+ "minLength": 1
597
+ },
598
+ "name": {
599
+ "type": "string",
600
+ "minLength": 1
601
+ },
602
+ "documentation": {
603
+ "type": "string",
604
+ "minLength": 1
605
+ },
606
+ "category": {
607
+ "$ref": "#/definitions/DriverCategory"
608
+ }
609
+ }
610
+ },
611
+ "Assessment": {
612
+ "type": "object",
613
+ "description": "Outcome of analysis of the state of affairs",
614
+ "required": ["id", "name", "assessmentType"],
615
+ "properties": {
616
+ "id": {
617
+ "type": "string",
618
+ "format": "uuid",
619
+ "minLength": 1
620
+ },
621
+ "name": {
622
+ "type": "string",
623
+ "minLength": 1
624
+ },
625
+ "documentation": {
626
+ "type": "string",
627
+ "minLength": 1
628
+ },
629
+ "assessmentType": {
630
+ "$ref": "#/definitions/AssessmentType"
631
+ }
632
+ }
633
+ },
634
+ "Goal": {
635
+ "type": "object",
636
+ "description": "High-level statement of intent, direction, or desired end state",
637
+ "required": ["id", "name", "priority"],
638
+ "properties": {
639
+ "id": {
640
+ "type": "string",
641
+ "format": "uuid",
642
+ "minLength": 1
643
+ },
644
+ "name": {
645
+ "type": "string",
646
+ "minLength": 1
647
+ },
648
+ "documentation": {
649
+ "type": "string",
650
+ "minLength": 1
651
+ },
652
+ "priority": {
653
+ "$ref": "#/definitions/Priority"
654
+ },
655
+ "properties": {
656
+ "type": "object",
657
+ "description": "Cross-layer properties",
658
+ "properties": {
659
+ "goal": {
660
+ "type": "object",
661
+ "properties": {
662
+ "measurable": {
663
+ "type": "string",
664
+ "description": "optional"
665
+ },
666
+ "target-date": {
667
+ "type": "string",
668
+ "description": "optional"
669
+ },
670
+ "kpi": {
671
+ "type": "string",
672
+ "description": "optional"
673
+ }
674
+ }
675
+ }
676
+ }
677
+ }
678
+ }
679
+ },
680
+ "Outcome": {
681
+ "type": "object",
682
+ "description": "End result that has been achieved",
683
+ "required": ["id", "name", "status"],
684
+ "properties": {
685
+ "id": {
686
+ "type": "string",
687
+ "format": "uuid",
688
+ "minLength": 1
689
+ },
690
+ "name": {
691
+ "type": "string",
692
+ "minLength": 1
693
+ },
694
+ "documentation": {
695
+ "type": "string",
696
+ "minLength": 1
697
+ },
698
+ "status": {
699
+ "$ref": "#/definitions/OutcomeStatus"
700
+ },
701
+ "properties": {
702
+ "type": "object",
703
+ "description": "Cross-layer properties",
704
+ "properties": {
705
+ "outcome": {
706
+ "type": "object",
707
+ "properties": {
708
+ "achieved-date": {
709
+ "type": "string",
710
+ "description": "optional"
711
+ },
712
+ "metrics": {
713
+ "type": "string",
714
+ "description": "optional"
715
+ }
716
+ }
717
+ }
718
+ }
719
+ }
720
+ }
721
+ },
722
+ "Principle": {
723
+ "type": "object",
724
+ "description": "Normative property of all systems in a given context",
725
+ "required": ["id", "name", "category"],
726
+ "properties": {
727
+ "id": {
728
+ "type": "string",
729
+ "format": "uuid",
730
+ "minLength": 1
731
+ },
732
+ "name": {
733
+ "type": "string",
734
+ "minLength": 1
735
+ },
736
+ "documentation": {
737
+ "type": "string",
738
+ "minLength": 1
739
+ },
740
+ "category": {
741
+ "$ref": "#/definitions/PrincipleCategory"
742
+ },
743
+ "properties": {
744
+ "type": "object",
745
+ "description": "Cross-layer properties",
746
+ "properties": {
747
+ "principle": {
748
+ "type": "object",
749
+ "properties": {
750
+ "rationale": {
751
+ "type": "string",
752
+ "description": "optional"
753
+ },
754
+ "implications": {
755
+ "type": "string",
756
+ "description": "optional"
757
+ }
758
+ }
759
+ }
760
+ }
761
+ }
762
+ }
763
+ },
764
+ "Requirement": {
765
+ "type": "object",
766
+ "description": "Statement of need that must be realized",
767
+ "required": ["id", "name", "requirementType", "priority"],
768
+ "properties": {
769
+ "id": {
770
+ "type": "string",
771
+ "format": "uuid",
772
+ "minLength": 1
773
+ },
774
+ "name": {
775
+ "type": "string",
776
+ "minLength": 1
777
+ },
778
+ "documentation": {
779
+ "type": "string",
780
+ "minLength": 1
781
+ },
782
+ "requirementType": {
783
+ "$ref": "#/definitions/RequirementType"
784
+ },
785
+ "priority": {
786
+ "$ref": "#/definitions/Priority"
787
+ },
788
+ "properties": {
789
+ "type": "object",
790
+ "description": "Cross-layer properties",
791
+ "properties": {
792
+ "requirement": {
793
+ "type": "object",
794
+ "properties": {
795
+ "source": {
796
+ "type": "string",
797
+ "description": "optional"
798
+ },
799
+ "status": {
800
+ "type": "string",
801
+ "description": "optional"
802
+ },
803
+ "traceability-id": {
804
+ "type": "string",
805
+ "description": "optional"
806
+ },
807
+ "security.mitigates": {
808
+ "type": "string",
809
+ "description": "optional"
810
+ },
811
+ "security.implementation-type": {
812
+ "type": "string",
813
+ "description": "optional"
814
+ },
815
+ "security.implementation-params": {
816
+ "type": "string",
817
+ "description": "optional"
818
+ }
819
+ }
820
+ }
821
+ }
822
+ }
823
+ }
824
+ },
825
+ "Constraint": {
826
+ "type": "object",
827
+ "description": "Restriction on the way in which a system is realized",
828
+ "required": ["id", "name", "constraintType"],
829
+ "properties": {
830
+ "id": {
831
+ "type": "string",
832
+ "format": "uuid",
833
+ "minLength": 1
834
+ },
835
+ "name": {
836
+ "type": "string",
837
+ "minLength": 1
838
+ },
839
+ "documentation": {
840
+ "type": "string",
841
+ "minLength": 1
842
+ },
843
+ "constraintType": {
844
+ "$ref": "#/definitions/ConstraintType"
845
+ },
846
+ "properties": {
847
+ "type": "object",
848
+ "description": "Cross-layer properties",
849
+ "properties": {
850
+ "constraint": {
851
+ "type": "object",
852
+ "properties": {
853
+ "source": {
854
+ "type": "string",
855
+ "description": "optional"
856
+ },
857
+ "negotiable": {
858
+ "type": "string",
859
+ "description": "optional"
860
+ },
861
+ "commitment-type": {
862
+ "type": "string",
863
+ "description": "optional"
864
+ },
865
+ "compliance-requirements": {
866
+ "type": "string",
867
+ "description": "optional"
868
+ },
869
+ "penalties": {
870
+ "type": "string",
871
+ "description": "optional"
872
+ }
873
+ }
874
+ }
875
+ }
876
+ }
877
+ }
878
+ },
879
+ "Meaning": {
880
+ "type": "object",
881
+ "description": "Knowledge or expertise present in a representation",
882
+ "required": ["id", "name"],
883
+ "properties": {
884
+ "id": {
885
+ "type": "string",
886
+ "format": "uuid",
887
+ "minLength": 1
888
+ },
889
+ "name": {
890
+ "type": "string",
891
+ "minLength": 1
892
+ },
893
+ "documentation": {
894
+ "type": "string",
895
+ "minLength": 1
896
+ }
897
+ }
898
+ },
899
+ "Value": {
900
+ "type": "object",
901
+ "description": "Relative worth, utility, or importance of something",
902
+ "required": ["id", "name", "valueType"],
903
+ "properties": {
904
+ "id": {
905
+ "type": "string",
906
+ "format": "uuid",
907
+ "minLength": 1
908
+ },
909
+ "name": {
910
+ "type": "string",
911
+ "minLength": 1
912
+ },
913
+ "documentation": {
914
+ "type": "string",
915
+ "minLength": 1
916
+ },
917
+ "valueType": {
918
+ "$ref": "#/definitions/ValueType"
919
+ },
920
+ "properties": {
921
+ "type": "object",
922
+ "description": "Cross-layer properties",
923
+ "properties": {
924
+ "value": {
925
+ "type": "object",
926
+ "properties": {
927
+ "quantifiable": {
928
+ "type": "string",
929
+ "description": "optional"
930
+ },
931
+ "measurement": {
932
+ "type": "string",
933
+ "description": "optional"
934
+ }
935
+ }
936
+ }
937
+ }
938
+ }
939
+ }
940
+ }
941
+ }
942
+ }