@documentation-robotics/cli 0.1.0 → 0.1.7

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 (510) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +466 -693
  3. package/dist/analysis/data-model-analyzer.js +189 -0
  4. package/dist/analysis/data-model-analyzer.js.map +7 -0
  5. package/dist/analysis/index.js +3 -0
  6. package/dist/analysis/index.js.map +7 -0
  7. package/dist/analysis/relationship-classifier.js +181 -0
  8. package/dist/analysis/relationship-classifier.js.map +7 -0
  9. package/dist/analyzers/base-analyzer.js +1 -0
  10. package/dist/analyzers/base-analyzer.js.map +7 -0
  11. package/dist/analyzers/call-graph-utils.js +39 -0
  12. package/dist/analyzers/call-graph-utils.js.map +7 -0
  13. package/dist/analyzers/cbm-analyzer.js +1205 -0
  14. package/dist/analyzers/cbm-analyzer.js.map +7 -0
  15. package/dist/analyzers/heuristic-utils.js +55 -0
  16. package/dist/analyzers/heuristic-utils.js.map +7 -0
  17. package/dist/analyzers/mapping-loader.js +146 -0
  18. package/dist/analyzers/mapping-loader.js.map +7 -0
  19. package/dist/analyzers/registry.js +124 -0
  20. package/dist/analyzers/registry.js.map +7 -0
  21. package/dist/analyzers/session-state.js +176 -0
  22. package/dist/analyzers/session-state.js.map +7 -0
  23. package/dist/analyzers/stdio-client.js +208 -0
  24. package/dist/analyzers/stdio-client.js.map +7 -0
  25. package/dist/analyzers/types.js +15 -0
  26. package/dist/analyzers/types.js.map +7 -0
  27. package/dist/analyzers/verify-engine.js +209 -0
  28. package/dist/analyzers/verify-engine.js.map +7 -0
  29. package/dist/analyzers/verify-ignore.js +130 -0
  30. package/dist/analyzers/verify-ignore.js.map +7 -0
  31. package/dist/analyzers/version.js +8 -0
  32. package/dist/analyzers/version.js.map +7 -0
  33. package/dist/audit/ai/runner.js +41 -0
  34. package/dist/audit/ai/runner.js.map +7 -0
  35. package/dist/audit/differential-analyzer.js +183 -0
  36. package/dist/audit/differential-analyzer.js.map +7 -0
  37. package/dist/audit/index.js +32 -0
  38. package/dist/audit/index.js.map +7 -0
  39. package/dist/audit/nodes/ai/evaluator.js +49 -0
  40. package/dist/audit/nodes/ai/evaluator.js.map +7 -0
  41. package/dist/audit/nodes/ai/parser.js +55 -0
  42. package/dist/audit/nodes/ai/parser.js.map +7 -0
  43. package/dist/audit/nodes/ai/prompts.js +103 -0
  44. package/dist/audit/nodes/ai/prompts.js.map +7 -0
  45. package/dist/audit/nodes/analysis/node-completeness-checker.js +32 -0
  46. package/dist/audit/nodes/analysis/node-completeness-checker.js.map +7 -0
  47. package/dist/audit/nodes/analysis/node-definition-analyzer.js +47 -0
  48. package/dist/audit/nodes/analysis/node-definition-analyzer.js.map +7 -0
  49. package/dist/audit/nodes/analysis/node-overlap-detector.js +79 -0
  50. package/dist/audit/nodes/analysis/node-overlap-detector.js.map +7 -0
  51. package/dist/audit/nodes/model/orchestrator.js +82 -0
  52. package/dist/audit/nodes/model/orchestrator.js.map +7 -0
  53. package/dist/audit/nodes/spec/loader.js +116 -0
  54. package/dist/audit/nodes/spec/loader.js.map +7 -0
  55. package/dist/audit/nodes/spec/orchestrator.js +68 -0
  56. package/dist/audit/nodes/spec/orchestrator.js.map +7 -0
  57. package/dist/audit/nodes/types.js +1 -0
  58. package/dist/audit/nodes/types.js.map +7 -0
  59. package/dist/audit/pipeline/index.js +5 -0
  60. package/dist/audit/pipeline/index.js.map +7 -0
  61. package/dist/audit/pipeline/pipeline-orchestrator.js +218 -0
  62. package/dist/audit/pipeline/pipeline-orchestrator.js.map +7 -0
  63. package/dist/audit/relationships/ai/evaluator.js +235 -0
  64. package/dist/audit/relationships/ai/evaluator.js.map +7 -0
  65. package/dist/audit/relationships/ai/parser.js +197 -0
  66. package/dist/audit/relationships/ai/parser.js.map +7 -0
  67. package/dist/audit/relationships/ai/prompts.js +274 -0
  68. package/dist/audit/relationships/ai/prompts.js.map +7 -0
  69. package/dist/audit/relationships/analysis/balance-assessor.js +115 -0
  70. package/dist/audit/relationships/analysis/balance-assessor.js.map +7 -0
  71. package/dist/audit/relationships/analysis/coverage-analyzer.js +99 -0
  72. package/dist/audit/relationships/analysis/coverage-analyzer.js.map +7 -0
  73. package/dist/audit/relationships/analysis/duplicate-detector.js +95 -0
  74. package/dist/audit/relationships/analysis/duplicate-detector.js.map +7 -0
  75. package/dist/audit/relationships/analysis/gap-analyzer.js +99 -0
  76. package/dist/audit/relationships/analysis/gap-analyzer.js.map +7 -0
  77. package/dist/audit/relationships/analysis/layer-templates.js +294 -0
  78. package/dist/audit/relationships/analysis/layer-templates.js.map +7 -0
  79. package/dist/audit/relationships/graph/connectivity.js +129 -0
  80. package/dist/audit/relationships/graph/connectivity.js.map +7 -0
  81. package/dist/audit/relationships/graph/relationship-graph.js +179 -0
  82. package/dist/audit/relationships/graph/relationship-graph.js.map +7 -0
  83. package/dist/audit/relationships/model/balance-assessor.js +49 -0
  84. package/dist/audit/relationships/model/balance-assessor.js.map +7 -0
  85. package/dist/audit/relationships/model/coverage-analyzer.js +34 -0
  86. package/dist/audit/relationships/model/coverage-analyzer.js.map +7 -0
  87. package/dist/audit/relationships/model/duplicate-detector.js +68 -0
  88. package/dist/audit/relationships/model/duplicate-detector.js.map +7 -0
  89. package/dist/audit/relationships/model/gap-analyzer.js +41 -0
  90. package/dist/audit/relationships/model/gap-analyzer.js.map +7 -0
  91. package/dist/audit/relationships/model/orchestrator.js +126 -0
  92. package/dist/audit/relationships/model/orchestrator.js.map +7 -0
  93. package/dist/audit/relationships/spec/orchestrator.js +157 -0
  94. package/dist/audit/relationships/spec/orchestrator.js.map +7 -0
  95. package/dist/audit/reports/index.js +5 -0
  96. package/dist/audit/reports/index.js.map +7 -0
  97. package/dist/audit/reports/report-generator.js +118 -0
  98. package/dist/audit/reports/report-generator.js.map +7 -0
  99. package/dist/audit/snapshot-storage.js +163 -0
  100. package/dist/audit/snapshot-storage.js.map +7 -0
  101. package/dist/audit/types.js +21 -0
  102. package/dist/audit/types.js.map +7 -0
  103. package/dist/cli.js +223 -92
  104. package/dist/cli.js.map +3 -3
  105. package/dist/coding-agents/agents/claude-code.js +147 -0
  106. package/dist/coding-agents/agents/claude-code.js.map +7 -0
  107. package/dist/coding-agents/agents/index.js +5 -0
  108. package/dist/coding-agents/agents/index.js.map +7 -0
  109. package/dist/coding-agents/agents/types.js +1 -0
  110. package/dist/coding-agents/agents/types.js.map +7 -0
  111. package/dist/coding-agents/base-chat-client.js +45 -0
  112. package/dist/coding-agents/base-chat-client.js.map +7 -0
  113. package/dist/coding-agents/chat-utils.js +23 -0
  114. package/dist/coding-agents/chat-utils.js.map +7 -0
  115. package/dist/coding-agents/claude-code-client.js +246 -0
  116. package/dist/coding-agents/claude-code-client.js.map +7 -0
  117. package/dist/coding-agents/copilot-client.js +209 -0
  118. package/dist/coding-agents/copilot-client.js.map +7 -0
  119. package/dist/commands/add.js +95 -33
  120. package/dist/commands/add.js.map +2 -2
  121. package/dist/commands/analyzer.js +511 -0
  122. package/dist/commands/analyzer.js.map +7 -0
  123. package/dist/commands/audit-diff.js +49 -0
  124. package/dist/commands/audit-diff.js.map +7 -0
  125. package/dist/commands/audit-snapshots.js +62 -0
  126. package/dist/commands/audit-snapshots.js.map +7 -0
  127. package/dist/commands/audit.js +81 -0
  128. package/dist/commands/audit.js.map +7 -0
  129. package/dist/commands/catalog.js +248 -0
  130. package/dist/commands/catalog.js.map +7 -0
  131. package/dist/commands/changeset.js +577 -66
  132. package/dist/commands/changeset.js.map +2 -2
  133. package/dist/commands/chat.js +106 -83
  134. package/dist/commands/chat.js.map +2 -2
  135. package/dist/commands/claude.js +74 -0
  136. package/dist/commands/claude.js.map +7 -0
  137. package/dist/commands/conformance.js +71 -68
  138. package/dist/commands/conformance.js.map +2 -2
  139. package/dist/commands/copilot.js +75 -0
  140. package/dist/commands/copilot.js.map +7 -0
  141. package/dist/commands/delete.js +125 -11
  142. package/dist/commands/delete.js.map +3 -3
  143. package/dist/commands/discover-logic.js +44 -0
  144. package/dist/commands/discover-logic.js.map +7 -0
  145. package/dist/commands/docs.js +87 -0
  146. package/dist/commands/docs.js.map +7 -0
  147. package/dist/commands/element.js +14 -20
  148. package/dist/commands/element.js.map +2 -2
  149. package/dist/commands/export.js +13 -3
  150. package/dist/commands/export.js.map +2 -2
  151. package/dist/commands/import.js +51 -0
  152. package/dist/commands/import.js.map +7 -0
  153. package/dist/commands/info.js +30 -24
  154. package/dist/commands/info.js.map +2 -2
  155. package/dist/commands/init.js +27 -11
  156. package/dist/commands/init.js.map +2 -2
  157. package/dist/commands/list.js +63 -13
  158. package/dist/commands/list.js.map +3 -3
  159. package/dist/commands/relationship.js +225 -37
  160. package/dist/commands/relationship.js.map +2 -2
  161. package/dist/commands/report.js +54 -0
  162. package/dist/commands/report.js.map +7 -0
  163. package/dist/commands/reports.js +45 -0
  164. package/dist/commands/reports.js.map +7 -0
  165. package/dist/commands/schema.js +135 -0
  166. package/dist/commands/schema.js.map +7 -0
  167. package/dist/commands/search.js +40 -12
  168. package/dist/commands/search.js.map +2 -2
  169. package/dist/commands/show.js +58 -27
  170. package/dist/commands/show.js.map +2 -2
  171. package/dist/commands/stats.js +35 -0
  172. package/dist/commands/stats.js.map +7 -0
  173. package/dist/commands/trace.js +39 -16
  174. package/dist/commands/trace.js.map +2 -2
  175. package/dist/commands/update.js +141 -14
  176. package/dist/commands/update.js.map +2 -2
  177. package/dist/commands/upgrade.js +210 -46
  178. package/dist/commands/upgrade.js.map +3 -3
  179. package/dist/commands/validate.js +142 -23
  180. package/dist/commands/validate.js.map +3 -3
  181. package/dist/commands/version.js +8 -12
  182. package/dist/commands/version.js.map +2 -2
  183. package/dist/commands/visualize.js +162 -25
  184. package/dist/commands/visualize.js.map +2 -2
  185. package/dist/core/base-snapshot-manager.js +84 -0
  186. package/dist/core/base-snapshot-manager.js.map +7 -0
  187. package/dist/core/changeset-exporter.js +305 -0
  188. package/dist/core/changeset-exporter.js.map +7 -0
  189. package/dist/core/changeset-validator.js +41 -0
  190. package/dist/core/changeset-validator.js.map +7 -0
  191. package/dist/core/changeset.js +88 -173
  192. package/dist/core/changeset.js.map +2 -2
  193. package/dist/core/dependency-tracker.js +4 -2
  194. package/dist/core/dependency-tracker.js.map +2 -2
  195. package/dist/core/element.js +98 -27
  196. package/dist/core/element.js.map +2 -2
  197. package/dist/core/golden-copy-cache.js +290 -0
  198. package/dist/core/golden-copy-cache.js.map +7 -0
  199. package/dist/core/graph-model.js +266 -0
  200. package/dist/core/graph-model.js.map +7 -0
  201. package/dist/core/layer.js +159 -16
  202. package/dist/core/layer.js.map +2 -2
  203. package/dist/core/layers.js +32 -0
  204. package/dist/core/layers.js.map +7 -0
  205. package/dist/core/manifest.js +32 -11
  206. package/dist/core/manifest.js.map +2 -2
  207. package/dist/core/migration-registry.js +56 -1
  208. package/dist/core/migration-registry.js.map +2 -2
  209. package/dist/core/model.js +424 -217
  210. package/dist/core/model.js.map +3 -3
  211. package/dist/core/mutation-handler.js +179 -0
  212. package/dist/core/mutation-handler.js.map +7 -0
  213. package/dist/core/reference-registry.js +29 -21
  214. package/dist/core/reference-registry.js.map +2 -2
  215. package/dist/core/relationship-catalog.js +189 -0
  216. package/dist/core/relationship-catalog.js.map +7 -0
  217. package/dist/core/relationship-registry.js.map +2 -2
  218. package/dist/core/relationships.js.map +1 -1
  219. package/dist/core/report-data-model.js +285 -0
  220. package/dist/core/report-data-model.js.map +7 -0
  221. package/dist/core/spec-data-service.js +185 -0
  222. package/dist/core/spec-data-service.js.map +7 -0
  223. package/dist/core/spec-loader-types.js +1 -0
  224. package/dist/core/spec-loader-types.js.map +7 -0
  225. package/dist/core/spec-loader.js +234 -0
  226. package/dist/core/spec-loader.js.map +7 -0
  227. package/dist/core/staged-changeset-storage.js +282 -0
  228. package/dist/core/staged-changeset-storage.js.map +7 -0
  229. package/dist/core/staging-area.js +1002 -0
  230. package/dist/core/staging-area.js.map +7 -0
  231. package/dist/core/stats-collector.js +169 -0
  232. package/dist/core/stats-collector.js.map +7 -0
  233. package/dist/core/virtual-projection.js +443 -0
  234. package/dist/core/virtual-projection.js.map +7 -0
  235. package/dist/export/archimate-exporter.js +99 -60
  236. package/dist/export/archimate-exporter.js.map +2 -2
  237. package/dist/export/audit-formatters.js +479 -0
  238. package/dist/export/audit-formatters.js.map +7 -0
  239. package/dist/export/diff-formatters.js +99 -0
  240. package/dist/export/diff-formatters.js.map +7 -0
  241. package/dist/export/export-manager.js.map +2 -2
  242. package/dist/export/graphml-exporter.js +44 -27
  243. package/dist/export/graphml-exporter.js.map +2 -2
  244. package/dist/export/index.js +4 -0
  245. package/dist/export/index.js.map +2 -2
  246. package/dist/export/json-schema-exporter.js +55 -42
  247. package/dist/export/json-schema-exporter.js.map +2 -2
  248. package/dist/export/markdown-exporter.js +92 -70
  249. package/dist/export/markdown-exporter.js.map +2 -2
  250. package/dist/export/markdown-generator.js +248 -0
  251. package/dist/export/markdown-generator.js.map +7 -0
  252. package/dist/export/markdown-utils.js +30 -0
  253. package/dist/export/markdown-utils.js.map +7 -0
  254. package/dist/export/mermaid-markdown-exporter.js +37 -0
  255. package/dist/export/mermaid-markdown-exporter.js.map +7 -0
  256. package/dist/export/openapi-exporter.js +119 -71
  257. package/dist/export/openapi-exporter.js.map +2 -2
  258. package/dist/export/plantuml-exporter.js +104 -39
  259. package/dist/export/plantuml-exporter.js.map +2 -2
  260. package/dist/export/report-formatters.js +111 -0
  261. package/dist/export/report-formatters.js.map +7 -0
  262. package/dist/export/stats-formatters.js +98 -0
  263. package/dist/export/stats-formatters.js.map +7 -0
  264. package/dist/export/types.js +2 -14
  265. package/dist/export/types.js.map +2 -2
  266. package/dist/export/verify-formatters.js +153 -0
  267. package/dist/export/verify-formatters.js.map +7 -0
  268. package/dist/generated/compiled-validators.js +17 -0
  269. package/dist/generated/compiled-validators.js.map +7 -0
  270. package/dist/generated/index.js +31 -0
  271. package/dist/generated/index.js.map +7 -0
  272. package/dist/generated/layer-registry.js +190 -0
  273. package/dist/generated/layer-registry.js.map +7 -0
  274. package/dist/generated/layer-types.js +7 -0
  275. package/dist/generated/layer-types.js.map +7 -0
  276. package/dist/generated/node-types.js +1719 -0
  277. package/dist/generated/node-types.js.map +7 -0
  278. package/dist/generated/relationship-index.js +14552 -0
  279. package/dist/generated/relationship-index.js.map +7 -0
  280. package/dist/import/archimate-importer.js +166 -0
  281. package/dist/import/archimate-importer.js.map +7 -0
  282. package/dist/import/index.js +47 -0
  283. package/dist/import/index.js.map +7 -0
  284. package/dist/import/openapi-importer.js +143 -0
  285. package/dist/import/openapi-importer.js.map +7 -0
  286. package/dist/import/types.js +1 -0
  287. package/dist/import/types.js.map +7 -0
  288. package/dist/integrations/base-manager.js +311 -0
  289. package/dist/integrations/base-manager.js.map +7 -0
  290. package/dist/integrations/claude-manager.js +360 -0
  291. package/dist/integrations/claude-manager.js.map +7 -0
  292. package/dist/integrations/claude_code/agents/dr-advisor.md +253 -0
  293. package/dist/integrations/claude_code/agents/dr-architect.md +278 -0
  294. package/dist/integrations/claude_code/agents/dr-extractor.md +286 -0
  295. package/dist/integrations/claude_code/commands/dr-changeset.md +657 -0
  296. package/dist/integrations/claude_code/commands/dr-design.md +373 -0
  297. package/dist/integrations/claude_code/commands/dr-info.md +132 -0
  298. package/dist/integrations/claude_code/commands/dr-init.md +251 -0
  299. package/dist/integrations/claude_code/commands/dr-map.md +936 -0
  300. package/dist/integrations/claude_code/commands/dr-model.md +493 -0
  301. package/dist/integrations/claude_code/commands/dr-relate.md +814 -0
  302. package/dist/integrations/claude_code/commands/dr-sync.md +279 -0
  303. package/dist/integrations/claude_code/commands/dr-validate.md +654 -0
  304. package/dist/integrations/claude_code/commands/dr-verify.md +559 -0
  305. package/dist/integrations/claude_code/docs/END_TO_END_WALKTHROUGH.md +903 -0
  306. package/dist/integrations/claude_code/docs/QUICK_START.md +271 -0
  307. package/dist/integrations/claude_code/docs/README.md +347 -0
  308. package/dist/integrations/claude_code/skills/dr_01_motivation_layer/SKILL.md +550 -0
  309. package/dist/integrations/claude_code/skills/dr_02_business_layer/SKILL.md +620 -0
  310. package/dist/integrations/claude_code/skills/dr_03_security_layer/SKILL.md +642 -0
  311. package/dist/integrations/claude_code/skills/dr_04_application_layer/SKILL.md +911 -0
  312. package/dist/integrations/claude_code/skills/dr_05_technology_layer/SKILL.md +836 -0
  313. package/dist/integrations/claude_code/skills/dr_06_api_layer/SKILL.md +933 -0
  314. package/dist/integrations/claude_code/skills/dr_07_data_model_layer/SKILL.md +210 -0
  315. package/dist/integrations/claude_code/skills/dr_08_dataset_layer/SKILL.md +319 -0
  316. package/dist/integrations/claude_code/skills/dr_09_ux_layer/SKILL.md +319 -0
  317. package/dist/integrations/claude_code/skills/dr_10_navigation_layer/SKILL.md +318 -0
  318. package/dist/integrations/claude_code/skills/dr_11_apm_layer/SKILL.md +273 -0
  319. package/dist/integrations/claude_code/skills/dr_12_testing_layer/SKILL.md +273 -0
  320. package/dist/integrations/claude_code/skills/dr_changeset_reviewer/SKILL.md +187 -0
  321. package/dist/integrations/claude_code/skills/dr_codebase_memory/SKILL.md +590 -0
  322. package/dist/integrations/claude_code/skills/dr_engineering_guide/SKILL.md +295 -0
  323. package/dist/integrations/copilot-manager.js +328 -0
  324. package/dist/integrations/copilot-manager.js.map +7 -0
  325. package/dist/integrations/github_copilot/agents/dr-advisor.md +243 -0
  326. package/dist/integrations/github_copilot/agents/dr-architect.md +1567 -0
  327. package/dist/integrations/github_copilot/skills/dr_01_motivation_layer/SKILL.md +491 -0
  328. package/dist/integrations/github_copilot/skills/dr_02_business_layer/SKILL.md +539 -0
  329. package/dist/integrations/github_copilot/skills/dr_03_security_layer/SKILL.md +667 -0
  330. package/dist/integrations/github_copilot/skills/dr_04_application_layer/SKILL.md +670 -0
  331. package/dist/integrations/github_copilot/skills/dr_05_technology_layer/SKILL.md +660 -0
  332. package/dist/integrations/github_copilot/skills/dr_06_api_layer/SKILL.md +855 -0
  333. package/dist/integrations/github_copilot/skills/dr_07_data_model_layer/SKILL.md +171 -0
  334. package/dist/integrations/github_copilot/skills/dr_08_dataset_layer/SKILL.md +216 -0
  335. package/dist/integrations/github_copilot/skills/dr_09_ux_layer/SKILL.md +230 -0
  336. package/dist/integrations/github_copilot/skills/dr_10_navigation_layer/SKILL.md +228 -0
  337. package/dist/integrations/github_copilot/skills/dr_11_apm_layer/SKILL.md +234 -0
  338. package/dist/integrations/github_copilot/skills/dr_12_testing_layer/SKILL.md +230 -0
  339. package/dist/integrations/github_copilot/skills/dr_changeset_reviewer/SKILL.md +187 -0
  340. package/dist/integrations/hash-utils.js +51 -0
  341. package/dist/integrations/hash-utils.js.map +7 -0
  342. package/dist/integrations/types.js +16 -0
  343. package/dist/integrations/types.js.map +7 -0
  344. package/dist/reports/model-layer-report-generator.js +278 -0
  345. package/dist/reports/model-layer-report-generator.js.map +7 -0
  346. package/dist/reports/model-report-data.js +57 -0
  347. package/dist/reports/model-report-data.js.map +7 -0
  348. package/dist/reports/model-report-orchestrator.js +103 -0
  349. package/dist/reports/model-report-orchestrator.js.map +7 -0
  350. package/dist/schemas/bundled/analyzers/cbm.json +595 -0
  351. package/dist/schemas/bundled/analyzers/manifest.json +9 -0
  352. package/dist/schemas/bundled/api.json +3411 -0
  353. package/dist/schemas/bundled/apm.json +2371 -0
  354. package/dist/schemas/bundled/application.json +1253 -0
  355. package/dist/schemas/bundled/base.json +1622 -0
  356. package/dist/schemas/bundled/business.json +1279 -0
  357. package/dist/schemas/bundled/data-model.json +1298 -0
  358. package/dist/schemas/bundled/data-store.json +2025 -0
  359. package/dist/schemas/bundled/manifest.json +93 -0
  360. package/dist/schemas/bundled/motivation.json +1360 -0
  361. package/dist/schemas/bundled/navigation.json +1874 -0
  362. package/dist/schemas/bundled/security.json +3488 -0
  363. package/dist/schemas/bundled/technology.json +2067 -0
  364. package/dist/schemas/bundled/testing.json +3120 -0
  365. package/dist/schemas/bundled/ux.json +3592 -0
  366. package/dist/server/schemas.js +202 -0
  367. package/dist/server/schemas.js.map +7 -0
  368. package/dist/server/server.js +1336 -252
  369. package/dist/server/server.js.map +3 -3
  370. package/dist/server/telemetry-middleware.js +22 -15
  371. package/dist/server/telemetry-middleware.js.map +2 -2
  372. package/dist/server-entry.js +65 -0
  373. package/dist/server-entry.js.map +7 -0
  374. package/dist/telemetry/config.js +89 -0
  375. package/dist/telemetry/config.js.map +7 -0
  376. package/dist/telemetry/console-interceptor.js.map +1 -1
  377. package/dist/telemetry/detect.js +24 -0
  378. package/dist/telemetry/detect.js.map +7 -0
  379. package/dist/telemetry/fetch-otlp-exporter.js +112 -0
  380. package/dist/telemetry/fetch-otlp-exporter.js.map +7 -0
  381. package/dist/telemetry/index.js +153 -3
  382. package/dist/telemetry/index.js.map +2 -2
  383. package/dist/telemetry/resilient-exporter.js +22 -8
  384. package/dist/telemetry/resilient-exporter.js.map +2 -2
  385. package/dist/telemetry/resilient-log-exporter.js +17 -8
  386. package/dist/telemetry/resilient-log-exporter.js.map +2 -2
  387. package/dist/telemetry/test-instrumentation.js.map +2 -2
  388. package/dist/types/index.js +84 -0
  389. package/dist/types/index.js.map +3 -3
  390. package/dist/types/source-reference.js +1 -0
  391. package/dist/types/source-reference.js.map +7 -0
  392. package/dist/utils/chat-logger.js +292 -0
  393. package/dist/utils/chat-logger.js.map +7 -0
  394. package/dist/utils/claude-stream.js +8 -0
  395. package/dist/utils/claude-stream.js.map +7 -0
  396. package/dist/utils/date-utils.js +7 -0
  397. package/dist/utils/date-utils.js.map +7 -0
  398. package/dist/utils/element-utils.js.map +1 -1
  399. package/dist/utils/errors.js +88 -15
  400. package/dist/utils/errors.js.map +3 -3
  401. package/dist/utils/export-python-annotations.js +82 -0
  402. package/dist/utils/export-python-annotations.js.map +7 -0
  403. package/dist/utils/file-io.js +7 -2
  404. package/dist/utils/file-io.js.map +2 -2
  405. package/dist/utils/file-lock.js +156 -0
  406. package/dist/utils/file-lock.js.map +7 -0
  407. package/dist/utils/id-generator.js +18 -0
  408. package/dist/utils/id-generator.js.map +7 -0
  409. package/dist/utils/layer-name-formatter.js +16 -0
  410. package/dist/utils/layer-name-formatter.js.map +7 -0
  411. package/dist/utils/markdown-anchor.js +7 -0
  412. package/dist/utils/markdown-anchor.js.map +7 -0
  413. package/dist/utils/markdown-link.js +12 -0
  414. package/dist/utils/markdown-link.js.map +7 -0
  415. package/dist/utils/markdown-table.js +17 -0
  416. package/dist/utils/markdown-table.js.map +7 -0
  417. package/dist/utils/mermaid-utils.js +11 -0
  418. package/dist/utils/mermaid-utils.js.map +7 -0
  419. package/dist/utils/project-paths.js.map +2 -2
  420. package/dist/utils/source-reference.js +52 -0
  421. package/dist/utils/source-reference.js.map +7 -0
  422. package/dist/utils/spec-installer.js +40 -53
  423. package/dist/utils/spec-installer.js.map +2 -2
  424. package/dist/utils/spec-version.js +5 -1
  425. package/dist/utils/spec-version.js.map +2 -2
  426. package/dist/utils/string-utils.js +12 -0
  427. package/dist/utils/string-utils.js.map +7 -0
  428. package/dist/utils/table-formatting.js +19 -0
  429. package/dist/utils/table-formatting.js.map +7 -0
  430. package/dist/validators/index.js +4 -0
  431. package/dist/validators/index.js.map +2 -2
  432. package/dist/validators/naming-validator.js +20 -23
  433. package/dist/validators/naming-validator.js.map +2 -2
  434. package/dist/validators/reference-validator.js +23 -38
  435. package/dist/validators/reference-validator.js.map +2 -2
  436. package/dist/validators/relationship-schema-validator.js +243 -0
  437. package/dist/validators/relationship-schema-validator.js.map +7 -0
  438. package/dist/validators/schema-validator.js +168 -68
  439. package/dist/validators/schema-validator.js.map +2 -2
  440. package/dist/validators/semantic-validator.js +36 -60
  441. package/dist/validators/semantic-validator.js.map +2 -2
  442. package/dist/validators/types.js.map +2 -2
  443. package/dist/validators/validation-formatter.js +159 -0
  444. package/dist/validators/validation-formatter.js.map +7 -0
  445. package/dist/validators/validator.js +24 -38
  446. package/dist/validators/validator.js.map +2 -2
  447. package/dist/viewer/README.md +139 -0
  448. package/dist/viewer/assets/main-CY0Xufuj.css +1 -0
  449. package/dist/viewer/assets/main-DtgErnwF.js +81 -0
  450. package/dist/viewer/assets/vendor-CxKvDp2x.js +17 -0
  451. package/dist/viewer/favicon.svg +11 -0
  452. package/dist/viewer/fonts/inter/Inter-Black.woff2 +0 -0
  453. package/dist/viewer/fonts/inter/Inter-Bold.woff2 +0 -0
  454. package/dist/viewer/fonts/inter/Inter-ExtraBold.woff2 +0 -0
  455. package/dist/viewer/fonts/inter/Inter-Light.woff2 +0 -0
  456. package/dist/viewer/fonts/inter/Inter-Medium.woff2 +0 -0
  457. package/dist/viewer/fonts/inter/Inter-Regular.woff2 +0 -0
  458. package/dist/viewer/fonts/inter/Inter-SemiBold.woff2 +0 -0
  459. package/dist/viewer/fonts/jetbrains-mono/JetBrainsMono-Medium.woff2 +0 -0
  460. package/dist/viewer/fonts/jetbrains-mono/JetBrainsMono-Regular.woff2 +0 -0
  461. package/dist/viewer/fonts/jetbrains-mono/JetBrainsMono-SemiBold.woff2 +0 -0
  462. package/dist/viewer/index.html +15 -0
  463. package/dist/viewer/manifest.json +99 -0
  464. package/dist/viewer/version.json +1 -0
  465. package/package.json +42 -16
  466. package/PYTHON_CLI_PARITY.md +0 -265
  467. package/PYTHON_CLI_STRUCTURE_UPDATE.md +0 -246
  468. package/biome.json +0 -42
  469. package/bunfig.toml +0 -3
  470. package/dist/ai/claude-client.js +0 -71
  471. package/dist/ai/claude-client.js.map +0 -7
  472. package/dist/ai/context-provider.js +0 -129
  473. package/dist/ai/context-provider.js.map +0 -7
  474. package/dist/ai/tools.js +0 -231
  475. package/dist/ai/tools.js.map +0 -7
  476. package/dist/commands/migrate.js +0 -36
  477. package/dist/commands/migrate.js.map +0 -7
  478. package/dist/commands/project.js +0 -74
  479. package/dist/commands/project.js.map +0 -7
  480. package/dist/core/active-changeset.js +0 -52
  481. package/dist/core/active-changeset.js.map +0 -7
  482. package/dist/core/projection-engine.js +0 -288
  483. package/dist/core/projection-engine.js.map +0 -7
  484. package/dist/schemas/bundled/01-motivation-layer.schema.json +0 -942
  485. package/dist/schemas/bundled/02-business-layer.schema.json +0 -1293
  486. package/dist/schemas/bundled/03-security-layer.schema.json +0 -2177
  487. package/dist/schemas/bundled/04-application-layer.schema.json +0 -1328
  488. package/dist/schemas/bundled/05-technology-layer.schema.json +0 -1465
  489. package/dist/schemas/bundled/06-api-layer.schema.json +0 -1743
  490. package/dist/schemas/bundled/07-data-model-layer.schema.json +0 -1253
  491. package/dist/schemas/bundled/08-datastore-layer.schema.json +0 -892
  492. package/dist/schemas/bundled/09-ux-layer.schema.json +0 -1506
  493. package/dist/schemas/bundled/10-navigation-layer.schema.json +0 -843
  494. package/dist/schemas/bundled/11-apm-observability-layer.schema.json +0 -1430
  495. package/dist/schemas/bundled/12-testing-layer.schema.json +0 -1091
  496. package/dist/schemas/bundled/common/layer-extensions.schema.json +0 -266
  497. package/dist/schemas/bundled/common/predicates.schema.json +0 -493
  498. package/dist/schemas/bundled/common/relationships.schema.json +0 -791
  499. package/dist/schemas/bundled/common/source-references.schema.json +0 -71
  500. package/dist/schemas/bundled/link-registry.json +0 -1839
  501. package/dist/schemas/bundled/link-registry.schema.json +0 -339
  502. package/dist/schemas/bundled/relationship-catalog.json +0 -1302
  503. package/dist/schemas/bundled/relationship-type.schema.json +0 -221
  504. package/dist/utils/model-path.js +0 -22
  505. package/dist/utils/model-path.js.map +0 -7
  506. package/docs/TEST-INSTRUMENTATION.md +0 -405
  507. package/docs/telemetry.md +0 -427
  508. package/test-debug.js +0 -33
  509. package/test-special.mjs +0 -46
  510. package/test_runner.ts +0 -7
@@ -0,0 +1,1622 @@
1
+ {
2
+ "specVersion": "0.8.4",
3
+ "schemas": {
4
+ "spec-node": {
5
+ "$schema": "http://json-schema.org/draft-07/schema#",
6
+ "$id": "urn:dr:spec:base:spec-node",
7
+ "title": "SpecNode",
8
+ "description": "Base schema for all spec node types. Each node type schema extends this with type-specific attribute constraints via allOf.",
9
+ "type": "object",
10
+ "required": ["id", "path", "spec_node_id", "type", "name"],
11
+ "additionalProperties": false,
12
+ "properties": {
13
+ "id": {
14
+ "type": "string",
15
+ "format": "uuid",
16
+ "description": "Unique node instance identifier (UUIDv4). Globally unique across the entire model.",
17
+ "examples": ["550e8400-e29b-41d4-a716-446655440000"]
18
+ },
19
+ "path": {
20
+ "type": "string",
21
+ "pattern": "^[a-z][a-z0-9-]*\\.[a-z][a-z0-9-]*\\.[a-z][a-z0-9-]*$",
22
+ "description": "Human-readable element path in format {layer}.{type}.{name} (e.g., 'motivation.goal.increase-revenue')"
23
+ },
24
+ "spec_node_id": {
25
+ "type": "string",
26
+ "pattern": "^[a-z-]+\\.[a-z][a-z0-9-]*$",
27
+ "description": "Reference to the spec node type that this node conforms to (e.g., 'motivation.goal')"
28
+ },
29
+ "type": {
30
+ "type": "string",
31
+ "description": "Denormalized node type for efficient filtering and queries. Extracted from spec_node_id (the part after the dot).",
32
+ "examples": ["goal", "requirement", "endpoint", "table"]
33
+ },
34
+ "layer_id": {
35
+ "type": "string",
36
+ "pattern": "^[a-z][a-z0-9-]*$",
37
+ "description": "Denormalized layer ID for efficient layer-scoped queries. Extracted from spec_node_id (the part before the dot)."
38
+ },
39
+ "name": {
40
+ "type": "string",
41
+ "description": "Human-readable instance name",
42
+ "examples": [
43
+ "Improve Customer Satisfaction",
44
+ "User Login API",
45
+ "Customer Table"
46
+ ]
47
+ },
48
+ "description": {
49
+ "type": "string",
50
+ "description": "Optional detailed description of this specific node instance"
51
+ },
52
+ "attributes": {
53
+ "type": "object",
54
+ "description": "Attribute values for this node instance. Keys must correspond to attributes defined in the per-type schema, and values must conform to the type constraints."
55
+ },
56
+ "source_reference": {
57
+ "$ref": "urn:dr:spec:base:source-references#/definitions/SourceReference",
58
+ "description": "Optional provenance tracking linking this node to source code locations"
59
+ },
60
+ "metadata": {
61
+ "type": "object",
62
+ "description": "Optional metadata about the lifecycle and version of this node instance",
63
+ "additionalProperties": false,
64
+ "properties": {
65
+ "created_at": {
66
+ "type": "string",
67
+ "format": "date-time",
68
+ "description": "ISO 8601 timestamp when this node was created"
69
+ },
70
+ "updated_at": {
71
+ "type": "string",
72
+ "format": "date-time",
73
+ "description": "ISO 8601 timestamp of the last modification"
74
+ },
75
+ "created_by": {
76
+ "type": "string",
77
+ "description": "User or system that created this node"
78
+ },
79
+ "version": {
80
+ "type": "integer",
81
+ "minimum": 1,
82
+ "description": "Version number of this node (incremented on updates)"
83
+ }
84
+ }
85
+ }
86
+ }
87
+ },
88
+ "spec-node-relationship": {
89
+ "$schema": "http://json-schema.org/draft-07/schema#",
90
+ "$id": "urn:dr:spec:base:spec-node-relationship",
91
+ "title": "SpecNodeRelationship",
92
+ "description": "Base type for relationship type definitions in the specification. Defines valid relationships between node types, including cardinality, strength, and semantic properties.",
93
+ "type": "object",
94
+ "required": [
95
+ "id",
96
+ "source_spec_node_id",
97
+ "destination_spec_node_id",
98
+ "predicate"
99
+ ],
100
+ "additionalProperties": false,
101
+ "properties": {
102
+ "id": {
103
+ "type": "string",
104
+ "pattern": "^[a-z-]+\\.[a-z-]+\\.[a-z-]+$",
105
+ "description": "Unique relationship ID in format: {source-layer}.{predicate}.{dest-layer}. All components use lowercase with hyphens.",
106
+ "examples": [
107
+ "motivation.supports.motivation",
108
+ "motivation.realizes.business",
109
+ "api.exposes.data-model"
110
+ ]
111
+ },
112
+ "source_spec_node_id": {
113
+ "type": "string",
114
+ "pattern": "^[a-z-]+\\.[a-z][a-z0-9-]*$",
115
+ "description": "SpecNode ID that can serve as the source of this relationship type"
116
+ },
117
+ "source_layer": {
118
+ "type": "string",
119
+ "pattern": "^[a-z][a-z0-9-]*$",
120
+ "description": "Denormalized layer ID extracted from source_spec_node_id for efficient queries"
121
+ },
122
+ "destination_spec_node_id": {
123
+ "type": "string",
124
+ "pattern": "^[a-z-]+\\.[a-z][a-z0-9-]*$",
125
+ "description": "SpecNode ID that can serve as the destination of this relationship type"
126
+ },
127
+ "destination_layer": {
128
+ "type": "string",
129
+ "pattern": "^[a-z][a-z0-9-]*$",
130
+ "description": "Denormalized layer ID extracted from destination_spec_node_id for efficient queries"
131
+ },
132
+ "predicate": {
133
+ "type": "string",
134
+ "description": "Semantic predicate from PredicateCatalog describing the relationship type. Must be a valid predicate name.",
135
+ "examples": [
136
+ "supports",
137
+ "realizes",
138
+ "fulfills",
139
+ "implements",
140
+ "uses",
141
+ "consumes"
142
+ ]
143
+ },
144
+ "cardinality": {
145
+ "type": "string",
146
+ "enum": ["one-to-one", "one-to-many", "many-to-one", "many-to-many"],
147
+ "description": "Multiplicity constraint on this relationship type. Defines how many source nodes can relate to how many destination nodes.",
148
+ "default": "many-to-many"
149
+ },
150
+ "strength": {
151
+ "type": "string",
152
+ "enum": ["critical", "high", "medium", "low"],
153
+ "description": "Typical importance or strength of this relationship type",
154
+ "default": "medium"
155
+ },
156
+ "required": {
157
+ "type": "boolean",
158
+ "description": "Whether instances of the source node type must have at least one relationship of this type",
159
+ "default": false
160
+ },
161
+ "attributes": {
162
+ "type": "object",
163
+ "description": "Optional schema defining attributes that can appear on relationship instances of this type",
164
+ "additionalProperties": {
165
+ "$ref": "urn:dr:spec:base:attribute-spec#/definitions/AttributeSpec"
166
+ },
167
+ "minProperties": 0,
168
+ "examples": [
169
+ {
170
+ "reason": {
171
+ "type": "string",
172
+ "description": "Explanation for why this relationship exists"
173
+ },
174
+ "strength_override": {
175
+ "type": "enum",
176
+ "enum_values": ["critical", "high", "medium", "low"],
177
+ "description": "Instance-specific strength override"
178
+ }
179
+ }
180
+ ]
181
+ }
182
+ }
183
+ },
184
+ "source-references": {
185
+ "$schema": "http://json-schema.org/draft-07/schema#",
186
+ "$id": "urn:dr:spec:base:source-references",
187
+ "title": "Source Code Reference Definitions",
188
+ "description": "Reusable JSON Schema definitions for linking architecture elements to source code locations",
189
+ "version": "1.0.0",
190
+ "definitions": {
191
+ "ProvenanceType": {
192
+ "type": "string",
193
+ "enum": ["extracted", "manual", "inferred", "generated"],
194
+ "description": "How this reference was created: extracted (automated ingestion), manual (human added), inferred (pattern matching), generated (code generated from model)"
195
+ },
196
+ "SourceLocation": {
197
+ "type": "object",
198
+ "description": "A specific location in source code, identified by file path and optional symbol",
199
+ "required": ["file"],
200
+ "properties": {
201
+ "file": {
202
+ "type": "string",
203
+ "minLength": 1,
204
+ "description": "File path relative to repository root"
205
+ },
206
+ "symbol": {
207
+ "type": "string",
208
+ "description": "Named code element (e.g., ClassName.methodName, function_name)"
209
+ }
210
+ }
211
+ },
212
+ "RepositoryContext": {
213
+ "type": "object",
214
+ "description": "Repository context for the source reference",
215
+ "properties": {
216
+ "url": {
217
+ "type": "string",
218
+ "format": "uri",
219
+ "description": "Git remote URL (HTTPS or SSH format)"
220
+ },
221
+ "commit": {
222
+ "type": "string",
223
+ "pattern": "^[0-9a-f]{40}$",
224
+ "description": "Full 40-character Git commit SHA"
225
+ }
226
+ }
227
+ },
228
+ "SourceReference": {
229
+ "type": "object",
230
+ "description": "Links entity to source code location(s) with provenance tracking. For inferred or generated elements, locations may be omitted when no source file exists yet.",
231
+ "required": ["provenance"],
232
+ "properties": {
233
+ "provenance": {
234
+ "$ref": "#/definitions/ProvenanceType"
235
+ },
236
+ "locations": {
237
+ "type": "array",
238
+ "minItems": 1,
239
+ "items": {
240
+ "$ref": "#/definitions/SourceLocation"
241
+ },
242
+ "description": "One or more source code locations. Required for extracted and manual provenance; optional for inferred and generated."
243
+ },
244
+ "repository": {
245
+ "$ref": "#/definitions/RepositoryContext"
246
+ }
247
+ }
248
+ }
249
+ }
250
+ },
251
+ "attribute-spec": {
252
+ "$schema": "http://json-schema.org/draft-07/schema#",
253
+ "$id": "urn:dr:spec:base:attribute-spec",
254
+ "title": "AttributeSpec Definitions",
255
+ "description": "Reusable definition for attribute specifications used in spec-level schemas (e.g., spec-node-relationship attributes)",
256
+ "definitions": {
257
+ "AttributeSpec": {
258
+ "type": "object",
259
+ "title": "AttributeSpec",
260
+ "description": "Specification for a single attribute that can appear on node or relationship instances",
261
+ "required": ["type", "description"],
262
+ "additionalProperties": false,
263
+ "properties": {
264
+ "type": {
265
+ "type": "string",
266
+ "enum": [
267
+ "string",
268
+ "integer",
269
+ "number",
270
+ "boolean",
271
+ "array",
272
+ "object",
273
+ "enum"
274
+ ],
275
+ "description": "The JSON type of this attribute"
276
+ },
277
+ "description": {
278
+ "type": "string",
279
+ "description": "Human-readable description of this attribute's purpose"
280
+ },
281
+ "enum_values": {
282
+ "type": "array",
283
+ "items": {
284
+ "type": "string"
285
+ },
286
+ "description": "Required when type is 'enum'. Lists the valid string values for this attribute.",
287
+ "examples": [
288
+ ["high", "medium", "low"],
289
+ ["active", "inactive", "archived"]
290
+ ]
291
+ },
292
+ "format": {
293
+ "type": "string",
294
+ "description": "Optional format constraint for string types (e.g., 'email', 'uri', 'date-time')",
295
+ "examples": ["email", "uri", "date-time", "uuid"]
296
+ },
297
+ "default": {
298
+ "description": "Default value for this attribute when not provided on a node instance. Can be any JSON value."
299
+ }
300
+ },
301
+ "if": {
302
+ "properties": {
303
+ "type": {
304
+ "const": "enum"
305
+ }
306
+ },
307
+ "required": ["type"]
308
+ },
309
+ "then": {
310
+ "required": ["type", "description", "enum_values"]
311
+ }
312
+ }
313
+ }
314
+ },
315
+ "model-node-relationship": {
316
+ "$schema": "http://json-schema.org/draft-07/schema#",
317
+ "$id": "urn:dr:spec:base:model-node-relationship",
318
+ "title": "ModelNodeRelationship",
319
+ "description": "Concrete relationship instance connecting two ModelNodes. Represents a specific relationship edge in the model graph that conforms to a SpecNodeRelationship type.",
320
+ "type": "object",
321
+ "required": [
322
+ "id",
323
+ "spec_relationship_id",
324
+ "source_node_id",
325
+ "destination_node_id",
326
+ "predicate"
327
+ ],
328
+ "additionalProperties": false,
329
+ "properties": {
330
+ "id": {
331
+ "type": "string",
332
+ "format": "uuid",
333
+ "description": "Unique relationship instance identifier (UUIDv4). Globally unique across the entire model.",
334
+ "examples": ["660e9500-f39c-52e5-b827-557766551111"]
335
+ },
336
+ "spec_relationship_id": {
337
+ "type": "string",
338
+ "pattern": "^[a-z-]+\\.[a-z-]+\\.[a-z-]+$",
339
+ "description": "Reference to the SpecNodeRelationship type that this relationship conforms to (e.g., 'motivation.supports.motivation')"
340
+ },
341
+ "source_node_id": {
342
+ "type": "string",
343
+ "format": "uuid",
344
+ "description": "UUID of the source ModelNode. Must be a valid node in the model."
345
+ },
346
+ "source_layer_id": {
347
+ "type": "string",
348
+ "pattern": "^[a-z][a-z0-9-]*$",
349
+ "description": "Denormalized layer ID of the source node for efficient layer-scoped queries"
350
+ },
351
+ "destination_node_id": {
352
+ "type": "string",
353
+ "format": "uuid",
354
+ "description": "UUID of the destination ModelNode. Must be a valid node in the model."
355
+ },
356
+ "destination_layer_id": {
357
+ "type": "string",
358
+ "pattern": "^[a-z][a-z0-9-]*$",
359
+ "description": "Denormalized layer ID of the destination node for efficient layer-scoped queries"
360
+ },
361
+ "predicate": {
362
+ "type": "string",
363
+ "description": "The semantic predicate describing this relationship (e.g., 'supports', 'realizes'). Must be a valid predicate from PredicateCatalog.",
364
+ "examples": ["supports", "realizes", "fulfills", "implements", "uses"]
365
+ },
366
+ "attributes": {
367
+ "type": "object",
368
+ "description": "Optional relationship-specific attribute values. Keys must correspond to attributes defined in the SpecNodeRelationship, and values must conform to the AttributeSpec type constraints.",
369
+ "additionalProperties": true,
370
+ "examples": [
371
+ {
372
+ "strength_override": "critical",
373
+ "reason": "Business critical dependency"
374
+ }
375
+ ]
376
+ },
377
+ "source_reference": {
378
+ "$ref": "urn:dr:spec:base:source-references#/definitions/SourceReference",
379
+ "description": "Optional provenance tracking linking this relationship to source code locations or comments"
380
+ },
381
+ "metadata": {
382
+ "type": "object",
383
+ "description": "Optional metadata about the lifecycle and version of this relationship instance",
384
+ "additionalProperties": false,
385
+ "properties": {
386
+ "created_at": {
387
+ "type": "string",
388
+ "format": "date-time",
389
+ "description": "ISO 8601 timestamp when this relationship was created"
390
+ },
391
+ "updated_at": {
392
+ "type": "string",
393
+ "format": "date-time",
394
+ "description": "ISO 8601 timestamp of the last modification"
395
+ },
396
+ "created_by": {
397
+ "type": "string",
398
+ "description": "User or system that created this relationship"
399
+ },
400
+ "version": {
401
+ "type": "integer",
402
+ "minimum": 1,
403
+ "description": "Version number of this relationship (incremented on updates)"
404
+ }
405
+ }
406
+ }
407
+ }
408
+ },
409
+ "predicate-catalog": {
410
+ "$schema": "http://json-schema.org/draft-07/schema#",
411
+ "$id": "urn:dr:spec:base:predicate-catalog",
412
+ "title": "PredicateCatalog",
413
+ "description": "Master catalog of all semantic predicates used in the model. Consolidates predicate definitions with their semantics, inverse relationships, and standard alignments. Single source of truth for valid predicates.",
414
+ "type": "object",
415
+ "required": ["predicates"],
416
+ "additionalProperties": false,
417
+ "properties": {
418
+ "predicates": {
419
+ "type": "object",
420
+ "description": "Mapping of predicate names to their definitions",
421
+ "additionalProperties": {
422
+ "$ref": "#/definitions/PredicateDefinition"
423
+ },
424
+ "minProperties": 1,
425
+ "examples": [
426
+ {
427
+ "supports": {
428
+ "predicate": "supports",
429
+ "inverse": "supported-by",
430
+ "category": "motivation",
431
+ "semantics": {
432
+ "directionality": "bidirectional",
433
+ "transitivity": true,
434
+ "symmetry": false,
435
+ "reflexivity": false
436
+ },
437
+ "archimate_alignment": "Influence",
438
+ "description": "Element contributes to achieving or enabling another element"
439
+ }
440
+ }
441
+ ]
442
+ }
443
+ },
444
+ "definitions": {
445
+ "PredicateDefinition": {
446
+ "type": "object",
447
+ "title": "PredicateDefinition",
448
+ "description": "Complete definition of a semantic predicate including its semantics and relationships",
449
+ "required": ["predicate", "inverse", "category", "description"],
450
+ "additionalProperties": false,
451
+ "properties": {
452
+ "predicate": {
453
+ "type": "string",
454
+ "description": "Forward direction predicate name (e.g., 'supports')"
455
+ },
456
+ "inverse": {
457
+ "type": "string",
458
+ "description": "Inverse/reverse predicate name (e.g., 'supported-by')"
459
+ },
460
+ "category": {
461
+ "type": "string",
462
+ "enum": [
463
+ "motivation",
464
+ "business",
465
+ "security",
466
+ "application",
467
+ "technology",
468
+ "api",
469
+ "data",
470
+ "data-store",
471
+ "ux",
472
+ "navigation",
473
+ "apm",
474
+ "testing",
475
+ "structural",
476
+ "behavioral",
477
+ "dependency",
478
+ "traceability",
479
+ "governance"
480
+ ],
481
+ "description": "Category of relationship based on layer or domain"
482
+ },
483
+ "description": {
484
+ "type": "string",
485
+ "description": "Human-readable description of what this predicate means"
486
+ },
487
+ "archimate_alignment": {
488
+ "enum": [
489
+ "Composition",
490
+ "Aggregation",
491
+ "Assignment",
492
+ "Realization",
493
+ "Serving",
494
+ "Access",
495
+ "Influence",
496
+ "Triggering",
497
+ "Flow",
498
+ "Specialization",
499
+ "Association",
500
+ null
501
+ ],
502
+ "description": "Corresponding ArchiMate 3.2 relationship type (if applicable), or null if none applies"
503
+ },
504
+ "semantics": {
505
+ "type": "object",
506
+ "description": "Semantic properties describing the nature of this relationship",
507
+ "required": [
508
+ "directionality",
509
+ "transitivity",
510
+ "symmetry",
511
+ "reflexivity"
512
+ ],
513
+ "additionalProperties": false,
514
+ "properties": {
515
+ "directionality": {
516
+ "type": "string",
517
+ "enum": ["unidirectional", "bidirectional"],
518
+ "description": "Whether the relationship is unidirectional (one-way) or bidirectional (navigable both ways)"
519
+ },
520
+ "transitivity": {
521
+ "type": "boolean",
522
+ "description": "Whether the relationship is transitive: if A→B and B→C, then A→C"
523
+ },
524
+ "symmetry": {
525
+ "type": "boolean",
526
+ "description": "Whether the relationship is symmetric: if A→B, then B→A"
527
+ },
528
+ "reflexivity": {
529
+ "type": "boolean",
530
+ "description": "Whether an element can have this relationship with itself"
531
+ }
532
+ }
533
+ },
534
+ "default_strength": {
535
+ "type": "string",
536
+ "enum": ["critical", "high", "medium", "low"],
537
+ "description": "Default strength/importance level for relationships using this predicate"
538
+ }
539
+ }
540
+ }
541
+ }
542
+ },
543
+ "predicate-enum": {
544
+ "$schema": "http://json-schema.org/draft-07/schema#",
545
+ "$id": "urn:dr:spec:base:predicate-enum",
546
+ "title": "PredicateEnum",
547
+ "description": "Enumeration of all valid predicate names from spec/schemas/base/predicates.json. This schema is dynamically generated from the predicates catalog at build time.",
548
+ "type": "string",
549
+ "enum": [
550
+ "accesses",
551
+ "aggregates",
552
+ "applies",
553
+ "archives-to",
554
+ "assigned-to",
555
+ "associated-with",
556
+ "authenticates",
557
+ "authorizes",
558
+ "binds-to",
559
+ "cascades-to",
560
+ "composes",
561
+ "connects",
562
+ "constrained-by",
563
+ "constrains",
564
+ "consumes",
565
+ "covers",
566
+ "delivers",
567
+ "delivers-value",
568
+ "depends-on",
569
+ "derives-from",
570
+ "enforces",
571
+ "enforces-requirement",
572
+ "evaluates",
573
+ "exposes",
574
+ "extends",
575
+ "federates",
576
+ "flows-to",
577
+ "fulfills",
578
+ "fulfills-requirements",
579
+ "generates",
580
+ "governed-by",
581
+ "governed-by-principles",
582
+ "governs",
583
+ "implements",
584
+ "influence",
585
+ "intercepts",
586
+ "lazy-loads",
587
+ "manages",
588
+ "mandates",
589
+ "maps-to",
590
+ "measures",
591
+ "measures-outcome",
592
+ "migrates",
593
+ "mitigates",
594
+ "monitors",
595
+ "navigates-to",
596
+ "optimizes",
597
+ "owns",
598
+ "performs",
599
+ "protects",
600
+ "provides",
601
+ "realizes",
602
+ "references",
603
+ "references-table",
604
+ "renders",
605
+ "replicates",
606
+ "requires",
607
+ "resolves-with",
608
+ "satisfies",
609
+ "serves",
610
+ "specializes",
611
+ "supports",
612
+ "supports-goals",
613
+ "targets",
614
+ "tests",
615
+ "traces",
616
+ "tracks",
617
+ "triggers",
618
+ "uses",
619
+ "validates"
620
+ ]
621
+ },
622
+ "spec-layer": {
623
+ "$schema": "http://json-schema.org/draft-07/schema#",
624
+ "$id": "urn:dr:spec:base:spec-layer",
625
+ "title": "SpecLayer",
626
+ "description": "Base type for layer definitions in the specification. Defines the structure and metadata of a layer that contains nodes and relationships.",
627
+ "type": "object",
628
+ "required": ["id", "number", "name", "description"],
629
+ "additionalProperties": false,
630
+ "properties": {
631
+ "id": {
632
+ "type": "string",
633
+ "pattern": "^[a-z][a-z0-9-]*$",
634
+ "description": "Unique layer identifier using lowercase letters, numbers, and hyphens (e.g., 'motivation', 'data-model', 'data-store')",
635
+ "examples": [
636
+ "motivation",
637
+ "business",
638
+ "data-model",
639
+ "data-store",
640
+ "apm"
641
+ ]
642
+ },
643
+ "number": {
644
+ "type": "integer",
645
+ "minimum": 1,
646
+ "maximum": 99,
647
+ "description": "Layer number for ordering and cross-layer references. Maps to layer position in the 12-layer model.",
648
+ "examples": [1, 2, 3, 12]
649
+ },
650
+ "name": {
651
+ "type": "string",
652
+ "description": "Human-readable layer name",
653
+ "examples": ["Motivation Layer", "Business Layer", "Data Model Layer"]
654
+ },
655
+ "description": {
656
+ "type": "string",
657
+ "description": "Purpose and scope of this layer within the architecture model",
658
+ "examples": [
659
+ "Captures stakeholder concerns, goals, requirements, and constraints"
660
+ ]
661
+ },
662
+ "inspired_by": {
663
+ "type": "object",
664
+ "description": "External standard or model that inspired the design of this layer",
665
+ "additionalProperties": false,
666
+ "properties": {
667
+ "standard": {
668
+ "type": "string",
669
+ "description": "Name of the standard (e.g., 'ArchiMate', 'OpenAPI')",
670
+ "examples": [
671
+ "ArchiMate 3.2",
672
+ "OpenAPI 3.0",
673
+ "JSON Schema Draft 7"
674
+ ]
675
+ },
676
+ "version": {
677
+ "type": "string",
678
+ "description": "Version of the standard",
679
+ "examples": ["3.2", "3.0", "Draft 7"]
680
+ },
681
+ "url": {
682
+ "type": "string",
683
+ "format": "uri",
684
+ "description": "URL to the standard specification",
685
+ "examples": [
686
+ "https://pubs.opengroup.org/architecture/archimate32-doc/"
687
+ ]
688
+ }
689
+ }
690
+ },
691
+ "node_types": {
692
+ "type": "array",
693
+ "items": {
694
+ "type": "string",
695
+ "pattern": "^[a-z-]+\\.[a-z][a-z0-9-]*$",
696
+ "description": "Reference to a SpecNode ID"
697
+ },
698
+ "description": "List of SpecNode IDs that are valid in this layer. Used to define which node types can belong to this layer.",
699
+ "examples": [
700
+ [
701
+ "motivation.goal",
702
+ "motivation.requirement",
703
+ "motivation.constraint"
704
+ ]
705
+ ]
706
+ }
707
+ }
708
+ }
709
+ },
710
+ "predicates": {
711
+ "supports": {
712
+ "predicate": "supports",
713
+ "inverse": "supported-by",
714
+ "category": "motivation",
715
+ "description": "Element contributes to achieving or enabling another element",
716
+ "archimate_alignment": "Influence",
717
+ "semantics": {
718
+ "directionality": "bidirectional",
719
+ "transitivity": true,
720
+ "symmetry": false,
721
+ "reflexivity": false
722
+ }
723
+ },
724
+ "realizes": {
725
+ "predicate": "realizes",
726
+ "inverse": "realized-by",
727
+ "category": "structural",
728
+ "description": "Element implements or makes concrete another element",
729
+ "archimate_alignment": "Realization",
730
+ "semantics": {
731
+ "directionality": "bidirectional",
732
+ "transitivity": true,
733
+ "symmetry": false,
734
+ "reflexivity": false
735
+ }
736
+ },
737
+ "fulfills": {
738
+ "predicate": "fulfills",
739
+ "inverse": "fulfilled-by",
740
+ "category": "motivation",
741
+ "description": "Element satisfies the needs specified by another element",
742
+ "archimate_alignment": "Realization",
743
+ "semantics": {
744
+ "directionality": "bidirectional",
745
+ "transitivity": false,
746
+ "symmetry": false,
747
+ "reflexivity": false
748
+ }
749
+ },
750
+ "delivers": {
751
+ "predicate": "delivers",
752
+ "inverse": "delivered-by",
753
+ "category": "motivation",
754
+ "description": "Element provides value or benefit",
755
+ "archimate_alignment": "Realization",
756
+ "semantics": {
757
+ "directionality": "bidirectional",
758
+ "transitivity": false,
759
+ "symmetry": false,
760
+ "reflexivity": false
761
+ }
762
+ },
763
+ "constrains": {
764
+ "predicate": "constrains",
765
+ "inverse": "constrained-by",
766
+ "category": "motivation",
767
+ "description": "Element limits or restricts another element",
768
+ "archimate_alignment": "Influence",
769
+ "semantics": {
770
+ "directionality": "bidirectional",
771
+ "transitivity": false,
772
+ "symmetry": false,
773
+ "reflexivity": false
774
+ }
775
+ },
776
+ "governs": {
777
+ "predicate": "governs",
778
+ "inverse": "governed-by",
779
+ "category": "motivation",
780
+ "description": "Element provides rules or guidelines for another element",
781
+ "archimate_alignment": "Influence",
782
+ "semantics": {
783
+ "directionality": "bidirectional",
784
+ "transitivity": false,
785
+ "symmetry": false,
786
+ "reflexivity": false
787
+ }
788
+ },
789
+ "owns": {
790
+ "predicate": "owns",
791
+ "inverse": "owned-by",
792
+ "category": "business",
793
+ "description": "Element has responsibility or authority over another element",
794
+ "archimate_alignment": "Assignment",
795
+ "semantics": {
796
+ "directionality": "bidirectional",
797
+ "transitivity": false,
798
+ "symmetry": false,
799
+ "reflexivity": false
800
+ }
801
+ },
802
+ "performs": {
803
+ "predicate": "performs",
804
+ "inverse": "performed-by",
805
+ "category": "business",
806
+ "description": "Element executes or carries out another element",
807
+ "archimate_alignment": "Assignment",
808
+ "semantics": {
809
+ "directionality": "bidirectional",
810
+ "transitivity": false,
811
+ "symmetry": false,
812
+ "reflexivity": false
813
+ }
814
+ },
815
+ "provides": {
816
+ "predicate": "provides",
817
+ "inverse": "provided-by",
818
+ "category": "structural",
819
+ "description": "Element makes functionality available",
820
+ "archimate_alignment": "Serving",
821
+ "semantics": {
822
+ "directionality": "bidirectional",
823
+ "transitivity": false,
824
+ "symmetry": false,
825
+ "reflexivity": false
826
+ }
827
+ },
828
+ "consumes": {
829
+ "predicate": "consumes",
830
+ "inverse": "consumed-by",
831
+ "category": "dependency",
832
+ "description": "Element uses or depends on another element's functionality",
833
+ "archimate_alignment": "Serving",
834
+ "semantics": {
835
+ "directionality": "bidirectional",
836
+ "transitivity": false,
837
+ "symmetry": false,
838
+ "reflexivity": false
839
+ }
840
+ },
841
+ "covers": {
842
+ "predicate": "covers",
843
+ "inverse": "covered-by",
844
+ "category": "testing",
845
+ "description": "Coverage scope — test requirement or target covers an element",
846
+ "archimate_alignment": null,
847
+ "semantics": {
848
+ "directionality": "bidirectional",
849
+ "transitivity": false,
850
+ "symmetry": false,
851
+ "reflexivity": false
852
+ }
853
+ },
854
+ "extends": {
855
+ "predicate": "extends",
856
+ "inverse": "extended-by",
857
+ "category": "structural",
858
+ "description": "Schema or type inheritance (code-level specialization)",
859
+ "archimate_alignment": "Specialization",
860
+ "semantics": {
861
+ "directionality": "bidirectional",
862
+ "transitivity": true,
863
+ "symmetry": false,
864
+ "reflexivity": false
865
+ }
866
+ },
867
+ "satisfies": {
868
+ "predicate": "satisfies",
869
+ "inverse": "satisfied-by",
870
+ "category": "traceability",
871
+ "description": "Element fulfills or satisfies a requirement or constraint",
872
+ "archimate_alignment": "Realization",
873
+ "semantics": {
874
+ "directionality": "bidirectional",
875
+ "transitivity": false,
876
+ "symmetry": false,
877
+ "reflexivity": false
878
+ }
879
+ },
880
+ "targets": {
881
+ "predicate": "targets",
882
+ "inverse": "targeted-by",
883
+ "category": "security",
884
+ "description": "Threat identifies its attack surface or victim element",
885
+ "archimate_alignment": "Association",
886
+ "semantics": {
887
+ "directionality": "bidirectional",
888
+ "transitivity": false,
889
+ "symmetry": false,
890
+ "reflexivity": false
891
+ }
892
+ },
893
+ "applies": {
894
+ "predicate": "applies",
895
+ "inverse": "applied-by",
896
+ "category": "ux",
897
+ "description": "Element applies a configuration or style to another element",
898
+ "archimate_alignment": null,
899
+ "semantics": {
900
+ "directionality": "bidirectional",
901
+ "transitivity": false,
902
+ "symmetry": false,
903
+ "reflexivity": false
904
+ }
905
+ },
906
+ "archives-to": {
907
+ "predicate": "archives-to",
908
+ "inverse": "archived-from",
909
+ "category": "data",
910
+ "description": "Data is archived to a storage destination",
911
+ "archimate_alignment": null,
912
+ "semantics": {
913
+ "directionality": "bidirectional",
914
+ "transitivity": false,
915
+ "symmetry": false,
916
+ "reflexivity": false
917
+ }
918
+ },
919
+ "cascades-to": {
920
+ "predicate": "cascades-to",
921
+ "inverse": "cascaded-from",
922
+ "category": "data",
923
+ "description": "Operation or constraint cascades its effect to another element",
924
+ "archimate_alignment": null,
925
+ "semantics": {
926
+ "directionality": "bidirectional",
927
+ "transitivity": true,
928
+ "symmetry": false,
929
+ "reflexivity": false
930
+ }
931
+ },
932
+ "connects": {
933
+ "predicate": "connects",
934
+ "inverse": "connected-by",
935
+ "category": "structural",
936
+ "description": "Network or channel connects infrastructure elements",
937
+ "archimate_alignment": "Association",
938
+ "semantics": {
939
+ "directionality": "bidirectional",
940
+ "transitivity": false,
941
+ "symmetry": false,
942
+ "reflexivity": false
943
+ }
944
+ },
945
+ "enforces": {
946
+ "predicate": "enforces",
947
+ "inverse": "enforced-by",
948
+ "category": "governance",
949
+ "description": "Element actively enforces a policy or constraint",
950
+ "archimate_alignment": null,
951
+ "semantics": {
952
+ "directionality": "bidirectional",
953
+ "transitivity": false,
954
+ "symmetry": false,
955
+ "reflexivity": false
956
+ }
957
+ },
958
+ "evaluates": {
959
+ "predicate": "evaluates",
960
+ "inverse": "evaluated-by",
961
+ "category": "behavioral",
962
+ "description": "Element evaluates a condition or expression",
963
+ "archimate_alignment": null,
964
+ "semantics": {
965
+ "directionality": "bidirectional",
966
+ "transitivity": false,
967
+ "symmetry": false,
968
+ "reflexivity": false
969
+ }
970
+ },
971
+ "exposes": {
972
+ "predicate": "exposes",
973
+ "inverse": "exposed-by",
974
+ "category": "structural",
975
+ "description": "Interface exposes underlying functionality or resources",
976
+ "archimate_alignment": "Serving",
977
+ "semantics": {
978
+ "directionality": "bidirectional",
979
+ "transitivity": false,
980
+ "symmetry": false,
981
+ "reflexivity": false
982
+ }
983
+ },
984
+ "federates": {
985
+ "predicate": "federates",
986
+ "inverse": "federated-by",
987
+ "category": "data",
988
+ "description": "Element participates in a federated arrangement with another element",
989
+ "archimate_alignment": null,
990
+ "semantics": {
991
+ "directionality": "bidirectional",
992
+ "transitivity": false,
993
+ "symmetry": false,
994
+ "reflexivity": false
995
+ }
996
+ },
997
+ "generates": {
998
+ "predicate": "generates",
999
+ "inverse": "generated-by",
1000
+ "category": "behavioral",
1001
+ "description": "Element produces another element as output",
1002
+ "archimate_alignment": "Triggering",
1003
+ "semantics": {
1004
+ "directionality": "bidirectional",
1005
+ "transitivity": false,
1006
+ "symmetry": false,
1007
+ "reflexivity": false
1008
+ }
1009
+ },
1010
+ "governed-by": {
1011
+ "predicate": "governed-by",
1012
+ "inverse": "governs",
1013
+ "category": "motivation",
1014
+ "description": "Element is subject to governance by another element",
1015
+ "archimate_alignment": "Influence",
1016
+ "semantics": {
1017
+ "directionality": "bidirectional",
1018
+ "transitivity": false,
1019
+ "symmetry": false,
1020
+ "reflexivity": false
1021
+ }
1022
+ },
1023
+ "intercepts": {
1024
+ "predicate": "intercepts",
1025
+ "inverse": "intercepted-by",
1026
+ "category": "security",
1027
+ "description": "Element intercepts or gates the flow of another element",
1028
+ "archimate_alignment": null,
1029
+ "semantics": {
1030
+ "directionality": "bidirectional",
1031
+ "transitivity": false,
1032
+ "symmetry": false,
1033
+ "reflexivity": false
1034
+ }
1035
+ },
1036
+ "lazy-loads": {
1037
+ "predicate": "lazy-loads",
1038
+ "inverse": "lazy-loaded-by",
1039
+ "category": "behavioral",
1040
+ "description": "Element defers loading of another element until needed",
1041
+ "archimate_alignment": null,
1042
+ "semantics": {
1043
+ "directionality": "bidirectional",
1044
+ "transitivity": false,
1045
+ "symmetry": false,
1046
+ "reflexivity": false
1047
+ }
1048
+ },
1049
+ "manages": {
1050
+ "predicate": "manages",
1051
+ "inverse": "managed-by",
1052
+ "category": "governance",
1053
+ "description": "Element has management responsibility over another element",
1054
+ "archimate_alignment": null,
1055
+ "semantics": {
1056
+ "directionality": "bidirectional",
1057
+ "transitivity": false,
1058
+ "symmetry": false,
1059
+ "reflexivity": false
1060
+ }
1061
+ },
1062
+ "mandates": {
1063
+ "predicate": "mandates",
1064
+ "inverse": "mandated-by",
1065
+ "category": "governance",
1066
+ "description": "Element compels or requires another element",
1067
+ "archimate_alignment": null,
1068
+ "semantics": {
1069
+ "directionality": "bidirectional",
1070
+ "transitivity": false,
1071
+ "symmetry": false,
1072
+ "reflexivity": false
1073
+ }
1074
+ },
1075
+ "migrates": {
1076
+ "predicate": "migrates",
1077
+ "inverse": "migrated-by",
1078
+ "category": "data",
1079
+ "description": "Element moves or transforms data to another location",
1080
+ "archimate_alignment": null,
1081
+ "semantics": {
1082
+ "directionality": "bidirectional",
1083
+ "transitivity": false,
1084
+ "symmetry": false,
1085
+ "reflexivity": false
1086
+ }
1087
+ },
1088
+ "optimizes": {
1089
+ "predicate": "optimizes",
1090
+ "inverse": "optimized-by",
1091
+ "category": "dependency",
1092
+ "description": "Element improves the performance or efficiency of another element",
1093
+ "archimate_alignment": null,
1094
+ "semantics": {
1095
+ "directionality": "bidirectional",
1096
+ "transitivity": false,
1097
+ "symmetry": false,
1098
+ "reflexivity": false
1099
+ }
1100
+ },
1101
+ "replicates": {
1102
+ "predicate": "replicates",
1103
+ "inverse": "replicated-by",
1104
+ "category": "data",
1105
+ "description": "Element copies data to another element for redundancy or distribution",
1106
+ "archimate_alignment": null,
1107
+ "semantics": {
1108
+ "directionality": "bidirectional",
1109
+ "transitivity": false,
1110
+ "symmetry": false,
1111
+ "reflexivity": false
1112
+ }
1113
+ },
1114
+ "resolves-with": {
1115
+ "predicate": "resolves-with",
1116
+ "inverse": "resolved-by",
1117
+ "category": "behavioral",
1118
+ "description": "Navigation request is resolved using another element",
1119
+ "archimate_alignment": null,
1120
+ "semantics": {
1121
+ "directionality": "bidirectional",
1122
+ "transitivity": false,
1123
+ "symmetry": false,
1124
+ "reflexivity": false
1125
+ }
1126
+ },
1127
+ "tracks": {
1128
+ "predicate": "tracks",
1129
+ "inverse": "tracked-by",
1130
+ "category": "apm",
1131
+ "description": "Element records or monitors the state of another element",
1132
+ "archimate_alignment": null,
1133
+ "semantics": {
1134
+ "directionality": "bidirectional",
1135
+ "transitivity": false,
1136
+ "symmetry": false,
1137
+ "reflexivity": false
1138
+ }
1139
+ },
1140
+ "requires": {
1141
+ "predicate": "requires",
1142
+ "inverse": "required-by",
1143
+ "category": "security",
1144
+ "description": "Element needs another element to function correctly",
1145
+ "archimate_alignment": "Access",
1146
+ "semantics": {
1147
+ "directionality": "bidirectional",
1148
+ "transitivity": false,
1149
+ "symmetry": false,
1150
+ "reflexivity": false
1151
+ }
1152
+ },
1153
+ "protects": {
1154
+ "predicate": "protects",
1155
+ "inverse": "protected-by",
1156
+ "category": "security",
1157
+ "description": "Element provides security for another element",
1158
+ "archimate_alignment": "Influence",
1159
+ "semantics": {
1160
+ "directionality": "bidirectional",
1161
+ "transitivity": false,
1162
+ "symmetry": false,
1163
+ "reflexivity": false
1164
+ }
1165
+ },
1166
+ "mitigates": {
1167
+ "predicate": "mitigates",
1168
+ "inverse": "mitigated-by",
1169
+ "category": "security",
1170
+ "description": "Element reduces or addresses a risk or threat",
1171
+ "archimate_alignment": "Influence",
1172
+ "semantics": {
1173
+ "directionality": "bidirectional",
1174
+ "transitivity": false,
1175
+ "symmetry": false,
1176
+ "reflexivity": false
1177
+ }
1178
+ },
1179
+ "accesses": {
1180
+ "predicate": "accesses",
1181
+ "inverse": "accessed-by",
1182
+ "category": "security",
1183
+ "description": "Element can read or modify another element",
1184
+ "archimate_alignment": "Access",
1185
+ "semantics": {
1186
+ "directionality": "bidirectional",
1187
+ "transitivity": false,
1188
+ "symmetry": false,
1189
+ "reflexivity": false
1190
+ }
1191
+ },
1192
+ "uses": {
1193
+ "predicate": "uses",
1194
+ "inverse": "used-by",
1195
+ "category": "dependency",
1196
+ "description": "Element depends on or utilizes another element",
1197
+ "archimate_alignment": "Serving",
1198
+ "semantics": {
1199
+ "directionality": "bidirectional",
1200
+ "transitivity": false,
1201
+ "symmetry": false,
1202
+ "reflexivity": false
1203
+ }
1204
+ },
1205
+ "implements": {
1206
+ "predicate": "implements",
1207
+ "inverse": "implemented-by",
1208
+ "category": "structural",
1209
+ "description": "Element provides concrete implementation of another element",
1210
+ "archimate_alignment": "Realization",
1211
+ "semantics": {
1212
+ "directionality": "bidirectional",
1213
+ "transitivity": false,
1214
+ "symmetry": false,
1215
+ "reflexivity": false
1216
+ }
1217
+ },
1218
+ "composes": {
1219
+ "predicate": "composes",
1220
+ "inverse": "composed-of",
1221
+ "category": "structural",
1222
+ "description": "Whole-part relationship where part cannot exist without whole",
1223
+ "archimate_alignment": "Composition",
1224
+ "semantics": {
1225
+ "directionality": "bidirectional",
1226
+ "transitivity": false,
1227
+ "symmetry": false,
1228
+ "reflexivity": false
1229
+ }
1230
+ },
1231
+ "aggregates": {
1232
+ "predicate": "aggregates",
1233
+ "inverse": "aggregated-by",
1234
+ "category": "structural",
1235
+ "description": "Whole-part relationship where part can exist independently",
1236
+ "archimate_alignment": "Aggregation",
1237
+ "semantics": {
1238
+ "directionality": "bidirectional",
1239
+ "transitivity": false,
1240
+ "symmetry": false,
1241
+ "reflexivity": false
1242
+ }
1243
+ },
1244
+ "triggers": {
1245
+ "predicate": "triggers",
1246
+ "inverse": "triggered-by",
1247
+ "category": "behavioral",
1248
+ "description": "Element causes or initiates another element",
1249
+ "archimate_alignment": "Triggering",
1250
+ "semantics": {
1251
+ "directionality": "bidirectional",
1252
+ "transitivity": false,
1253
+ "symmetry": false,
1254
+ "reflexivity": false
1255
+ }
1256
+ },
1257
+ "flows-to": {
1258
+ "predicate": "flows-to",
1259
+ "inverse": "flows-from",
1260
+ "category": "behavioral",
1261
+ "description": "Data or control flows from one element to another",
1262
+ "archimate_alignment": "Flow",
1263
+ "semantics": {
1264
+ "directionality": "bidirectional",
1265
+ "transitivity": true,
1266
+ "symmetry": false,
1267
+ "reflexivity": false
1268
+ }
1269
+ },
1270
+ "monitors": {
1271
+ "predicate": "monitors",
1272
+ "inverse": "monitored-by",
1273
+ "category": "apm",
1274
+ "description": "Element observes or tracks another element",
1275
+ "archimate_alignment": "Serving",
1276
+ "semantics": {
1277
+ "directionality": "bidirectional",
1278
+ "transitivity": false,
1279
+ "symmetry": false,
1280
+ "reflexivity": false
1281
+ }
1282
+ },
1283
+ "tests": {
1284
+ "predicate": "tests",
1285
+ "inverse": "tested-by",
1286
+ "category": "testing",
1287
+ "description": "Element validates or verifies another element",
1288
+ "archimate_alignment": "Serving",
1289
+ "semantics": {
1290
+ "directionality": "bidirectional",
1291
+ "transitivity": false,
1292
+ "symmetry": false,
1293
+ "reflexivity": false
1294
+ }
1295
+ },
1296
+ "specializes": {
1297
+ "predicate": "specializes",
1298
+ "inverse": "generalized-by",
1299
+ "category": "structural",
1300
+ "description": "Type-subtype relationship (inheritance)",
1301
+ "archimate_alignment": "Specialization",
1302
+ "semantics": {
1303
+ "directionality": "bidirectional",
1304
+ "transitivity": true,
1305
+ "symmetry": false,
1306
+ "reflexivity": false
1307
+ }
1308
+ },
1309
+ "assigned-to": {
1310
+ "predicate": "assigned-to",
1311
+ "inverse": "assigns",
1312
+ "category": "structural",
1313
+ "description": "Active element assigned to behavior or role",
1314
+ "archimate_alignment": "Assignment",
1315
+ "semantics": {
1316
+ "directionality": "bidirectional",
1317
+ "transitivity": false,
1318
+ "symmetry": false,
1319
+ "reflexivity": false
1320
+ }
1321
+ },
1322
+ "associated-with": {
1323
+ "predicate": "associated-with",
1324
+ "inverse": "associated-with",
1325
+ "category": "structural",
1326
+ "description": "Generic relationship indicating elements are related or connected",
1327
+ "archimate_alignment": "Association",
1328
+ "semantics": {
1329
+ "directionality": "bidirectional",
1330
+ "transitivity": false,
1331
+ "symmetry": true,
1332
+ "reflexivity": false
1333
+ }
1334
+ },
1335
+ "influence": {
1336
+ "predicate": "influence",
1337
+ "inverse": "influenced-by",
1338
+ "category": "behavioral",
1339
+ "description": "Element affects or impacts another element",
1340
+ "archimate_alignment": "Influence",
1341
+ "semantics": {
1342
+ "directionality": "bidirectional",
1343
+ "transitivity": false,
1344
+ "symmetry": false,
1345
+ "reflexivity": false
1346
+ }
1347
+ },
1348
+ "serves": {
1349
+ "predicate": "serves",
1350
+ "inverse": "served-by",
1351
+ "category": "behavioral",
1352
+ "description": "Service available to consumer",
1353
+ "archimate_alignment": "Serving",
1354
+ "semantics": {
1355
+ "directionality": "bidirectional",
1356
+ "transitivity": false,
1357
+ "symmetry": false,
1358
+ "reflexivity": false
1359
+ }
1360
+ },
1361
+ "references": {
1362
+ "predicate": "references",
1363
+ "inverse": "referenced-by",
1364
+ "category": "dependency",
1365
+ "description": "Pointer reference without functional dependency",
1366
+ "archimate_alignment": null,
1367
+ "semantics": {
1368
+ "directionality": "bidirectional",
1369
+ "transitivity": false,
1370
+ "symmetry": false,
1371
+ "reflexivity": false
1372
+ }
1373
+ },
1374
+ "depends-on": {
1375
+ "predicate": "depends-on",
1376
+ "inverse": "dependency-of",
1377
+ "category": "dependency",
1378
+ "description": "Element requires another to function",
1379
+ "archimate_alignment": null,
1380
+ "semantics": {
1381
+ "directionality": "bidirectional",
1382
+ "transitivity": true,
1383
+ "symmetry": false,
1384
+ "reflexivity": false
1385
+ }
1386
+ },
1387
+ "supports-goals": {
1388
+ "predicate": "supports-goals",
1389
+ "inverse": "supported-by",
1390
+ "category": "traceability",
1391
+ "description": "Implementation contributes to achieving goal",
1392
+ "archimate_alignment": null,
1393
+ "semantics": {
1394
+ "directionality": "bidirectional",
1395
+ "transitivity": true,
1396
+ "symmetry": false,
1397
+ "reflexivity": false
1398
+ }
1399
+ },
1400
+ "fulfills-requirements": {
1401
+ "predicate": "fulfills-requirements",
1402
+ "inverse": "fulfilled-by",
1403
+ "category": "traceability",
1404
+ "description": "Implementation satisfies requirement",
1405
+ "archimate_alignment": null,
1406
+ "semantics": {
1407
+ "directionality": "bidirectional",
1408
+ "transitivity": false,
1409
+ "symmetry": false,
1410
+ "reflexivity": false
1411
+ }
1412
+ },
1413
+ "delivers-value": {
1414
+ "predicate": "delivers-value",
1415
+ "inverse": "delivered-by",
1416
+ "category": "traceability",
1417
+ "description": "Implementation provides business value",
1418
+ "archimate_alignment": null,
1419
+ "semantics": {
1420
+ "directionality": "bidirectional",
1421
+ "transitivity": false,
1422
+ "symmetry": false,
1423
+ "reflexivity": false
1424
+ }
1425
+ },
1426
+ "measures-outcome": {
1427
+ "predicate": "measures-outcome",
1428
+ "inverse": "measured-by",
1429
+ "category": "traceability",
1430
+ "description": "Metric validates outcome achievement",
1431
+ "archimate_alignment": null,
1432
+ "semantics": {
1433
+ "directionality": "bidirectional",
1434
+ "transitivity": false,
1435
+ "symmetry": false,
1436
+ "reflexivity": false
1437
+ }
1438
+ },
1439
+ "governed-by-principles": {
1440
+ "predicate": "governed-by-principles",
1441
+ "inverse": "governs",
1442
+ "category": "governance",
1443
+ "description": "Element follows architectural principle",
1444
+ "archimate_alignment": null,
1445
+ "semantics": {
1446
+ "directionality": "bidirectional",
1447
+ "transitivity": false,
1448
+ "symmetry": false,
1449
+ "reflexivity": false
1450
+ }
1451
+ },
1452
+ "constrained-by": {
1453
+ "predicate": "constrained-by",
1454
+ "inverse": "constrains",
1455
+ "category": "governance",
1456
+ "description": "Element limited by constraint",
1457
+ "archimate_alignment": null,
1458
+ "semantics": {
1459
+ "directionality": "bidirectional",
1460
+ "transitivity": false,
1461
+ "symmetry": false,
1462
+ "reflexivity": false
1463
+ }
1464
+ },
1465
+ "enforces-requirement": {
1466
+ "predicate": "enforces-requirement",
1467
+ "inverse": "enforced-by",
1468
+ "category": "governance",
1469
+ "description": "Element actively enforces requirement",
1470
+ "archimate_alignment": null,
1471
+ "semantics": {
1472
+ "directionality": "bidirectional",
1473
+ "transitivity": false,
1474
+ "symmetry": false,
1475
+ "reflexivity": false
1476
+ }
1477
+ },
1478
+ "traces": {
1479
+ "predicate": "traces",
1480
+ "inverse": "traced-by",
1481
+ "category": "apm",
1482
+ "description": "Distributed tracing relationships",
1483
+ "archimate_alignment": null,
1484
+ "semantics": {
1485
+ "directionality": "bidirectional",
1486
+ "transitivity": false,
1487
+ "symmetry": false,
1488
+ "reflexivity": false
1489
+ }
1490
+ },
1491
+ "measures": {
1492
+ "predicate": "measures",
1493
+ "inverse": "measured-by",
1494
+ "category": "apm",
1495
+ "description": "Metric collection relationships",
1496
+ "archimate_alignment": null,
1497
+ "semantics": {
1498
+ "directionality": "bidirectional",
1499
+ "transitivity": false,
1500
+ "symmetry": false,
1501
+ "reflexivity": false
1502
+ }
1503
+ },
1504
+ "authenticates": {
1505
+ "predicate": "authenticates",
1506
+ "inverse": "authenticated-by",
1507
+ "category": "security",
1508
+ "description": "Authentication flows",
1509
+ "archimate_alignment": null,
1510
+ "semantics": {
1511
+ "directionality": "bidirectional",
1512
+ "transitivity": false,
1513
+ "symmetry": false,
1514
+ "reflexivity": false
1515
+ }
1516
+ },
1517
+ "authorizes": {
1518
+ "predicate": "authorizes",
1519
+ "inverse": "authorized-by",
1520
+ "category": "security",
1521
+ "description": "Permission grants",
1522
+ "archimate_alignment": null,
1523
+ "semantics": {
1524
+ "directionality": "bidirectional",
1525
+ "transitivity": false,
1526
+ "symmetry": false,
1527
+ "reflexivity": false
1528
+ }
1529
+ },
1530
+ "renders": {
1531
+ "predicate": "renders",
1532
+ "inverse": "rendered-by",
1533
+ "category": "ux",
1534
+ "description": "UI rendering relationships",
1535
+ "archimate_alignment": null,
1536
+ "semantics": {
1537
+ "directionality": "bidirectional",
1538
+ "transitivity": false,
1539
+ "symmetry": false,
1540
+ "reflexivity": false
1541
+ }
1542
+ },
1543
+ "binds-to": {
1544
+ "predicate": "binds-to",
1545
+ "inverse": "bound-by",
1546
+ "category": "ux",
1547
+ "description": "Data binding relationships",
1548
+ "archimate_alignment": null,
1549
+ "semantics": {
1550
+ "directionality": "bidirectional",
1551
+ "transitivity": false,
1552
+ "symmetry": false,
1553
+ "reflexivity": false
1554
+ }
1555
+ },
1556
+ "navigates-to": {
1557
+ "predicate": "navigates-to",
1558
+ "inverse": "navigated-from",
1559
+ "category": "ux",
1560
+ "description": "Navigation flows",
1561
+ "archimate_alignment": null,
1562
+ "semantics": {
1563
+ "directionality": "bidirectional",
1564
+ "transitivity": false,
1565
+ "symmetry": false,
1566
+ "reflexivity": false
1567
+ }
1568
+ },
1569
+ "maps-to": {
1570
+ "predicate": "maps-to",
1571
+ "inverse": "mapped-from",
1572
+ "category": "data",
1573
+ "description": "Schema/table mapping",
1574
+ "archimate_alignment": null,
1575
+ "semantics": {
1576
+ "directionality": "bidirectional",
1577
+ "transitivity": false,
1578
+ "symmetry": false,
1579
+ "reflexivity": false
1580
+ }
1581
+ },
1582
+ "references-table": {
1583
+ "predicate": "references-table",
1584
+ "inverse": "table-referenced-by",
1585
+ "category": "data",
1586
+ "description": "Foreign key relationships",
1587
+ "archimate_alignment": null,
1588
+ "semantics": {
1589
+ "directionality": "bidirectional",
1590
+ "transitivity": false,
1591
+ "symmetry": false,
1592
+ "reflexivity": false
1593
+ }
1594
+ },
1595
+ "derives-from": {
1596
+ "predicate": "derives-from",
1597
+ "inverse": "derived-by",
1598
+ "category": "data",
1599
+ "description": "Calculated field relationships",
1600
+ "archimate_alignment": null,
1601
+ "semantics": {
1602
+ "directionality": "bidirectional",
1603
+ "transitivity": false,
1604
+ "symmetry": false,
1605
+ "reflexivity": false
1606
+ }
1607
+ },
1608
+ "validates": {
1609
+ "predicate": "validates",
1610
+ "inverse": "validated-by",
1611
+ "category": "testing",
1612
+ "description": "Test element validates that a requirement or target is satisfied",
1613
+ "archimate_alignment": null,
1614
+ "semantics": {
1615
+ "directionality": "bidirectional",
1616
+ "transitivity": false,
1617
+ "symmetry": false,
1618
+ "reflexivity": false
1619
+ }
1620
+ }
1621
+ }
1622
+ }