@documentation-robotics/cli 0.2.0 → 0.4.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 (335) hide show
  1. package/README.md +46 -16
  2. package/dist/analysis/relationship-classifier.js +2 -9
  3. package/dist/analysis/relationship-classifier.js.map +2 -2
  4. package/dist/analyzers/active-analyzer.js +62 -0
  5. package/dist/analyzers/active-analyzer.js.map +7 -0
  6. package/dist/analyzers/call-graph-utils.js +2 -2
  7. package/dist/analyzers/call-graph-utils.js.map +2 -2
  8. package/dist/analyzers/cards/build.js +191 -0
  9. package/dist/analyzers/cards/build.js.map +7 -0
  10. package/dist/analyzers/cards/classify.js +42 -0
  11. package/dist/analyzers/cards/classify.js.map +7 -0
  12. package/dist/analyzers/cards/edge-index.js +44 -0
  13. package/dist/analyzers/cards/edge-index.js.map +7 -0
  14. package/dist/analyzers/cards/extract.js +138 -0
  15. package/dist/analyzers/cards/extract.js.map +7 -0
  16. package/dist/analyzers/cards/facts.js +46 -0
  17. package/dist/analyzers/cards/facts.js.map +7 -0
  18. package/dist/analyzers/cards/graph.js +42 -0
  19. package/dist/analyzers/cards/graph.js.map +7 -0
  20. package/dist/analyzers/cards/index.js +8 -0
  21. package/dist/analyzers/cards/index.js.map +7 -0
  22. package/dist/analyzers/cards/routes.js +96 -0
  23. package/dist/analyzers/cards/routes.js.map +7 -0
  24. package/dist/analyzers/cards/tier0.js +18 -0
  25. package/dist/analyzers/cards/tier0.js.map +7 -0
  26. package/dist/analyzers/cards/types.js +1 -0
  27. package/dist/analyzers/cards/types.js.map +7 -0
  28. package/dist/analyzers/cbm-analyzer.js +270 -174
  29. package/dist/analyzers/cbm-analyzer.js.map +2 -2
  30. package/dist/analyzers/cbm-responses.js +342 -0
  31. package/dist/analyzers/cbm-responses.js.map +7 -0
  32. package/dist/analyzers/code-changes.js +159 -0
  33. package/dist/analyzers/code-changes.js.map +7 -0
  34. package/dist/analyzers/edge-relationships.js +49 -0
  35. package/dist/analyzers/edge-relationships.js.map +7 -0
  36. package/dist/analyzers/extraction-plan.js +541 -0
  37. package/dist/analyzers/extraction-plan.js.map +7 -0
  38. package/dist/analyzers/index-job.js +229 -0
  39. package/dist/analyzers/index-job.js.map +7 -0
  40. package/dist/analyzers/mapping-loader.js +9 -0
  41. package/dist/analyzers/mapping-loader.js.map +2 -2
  42. package/dist/analyzers/tier0-rules.js +153 -0
  43. package/dist/analyzers/tier0-rules.js.map +7 -0
  44. package/dist/analyzers/types.js.map +1 -1
  45. package/dist/audit/relationships/ai/prompts.js +10 -10
  46. package/dist/audit/relationships/ai/prompts.js.map +2 -2
  47. package/dist/audit/relationships/analysis/layer-templates.js +52 -52
  48. package/dist/audit/relationships/analysis/layer-templates.js.map +1 -1
  49. package/dist/cli.js +23 -11
  50. package/dist/cli.js.map +2 -2
  51. package/dist/coding-agents/default-permissions.js +31 -1
  52. package/dist/coding-agents/default-permissions.js.map +2 -2
  53. package/dist/coding-agents/drbot-mcp.js +269 -0
  54. package/dist/coding-agents/drbot-mcp.js.map +7 -0
  55. package/dist/commands/add.js +7 -4
  56. package/dist/commands/add.js.map +2 -2
  57. package/dist/commands/analyzer.js +143 -40
  58. package/dist/commands/analyzer.js.map +2 -2
  59. package/dist/commands/changeset-verify.js +63 -0
  60. package/dist/commands/changeset-verify.js.map +7 -0
  61. package/dist/commands/changeset.js +80 -29
  62. package/dist/commands/changeset.js.map +2 -2
  63. package/dist/commands/delete.js +10 -4
  64. package/dist/commands/delete.js.map +2 -2
  65. package/dist/commands/farm.js +176 -60
  66. package/dist/commands/farm.js.map +2 -2
  67. package/dist/commands/init.js +9 -26
  68. package/dist/commands/init.js.map +2 -2
  69. package/dist/commands/mcp.js +40 -21
  70. package/dist/commands/mcp.js.map +3 -3
  71. package/dist/commands/relationship.js +208 -37
  72. package/dist/commands/relationship.js.map +2 -2
  73. package/dist/commands/reports.js +3 -3
  74. package/dist/commands/reports.js.map +2 -2
  75. package/dist/commands/update.js +52 -32
  76. package/dist/commands/update.js.map +2 -2
  77. package/dist/commands/upgrade.js +99 -103
  78. package/dist/commands/upgrade.js.map +3 -3
  79. package/dist/commands/validate.js +19 -3
  80. package/dist/commands/validate.js.map +2 -2
  81. package/dist/commands/version.js +1 -1
  82. package/dist/commands/visualize.js +34 -15
  83. package/dist/commands/visualize.js.map +2 -2
  84. package/dist/core/annotation-store.js +15 -5
  85. package/dist/core/annotation-store.js.map +2 -2
  86. package/dist/core/catalog-migration.js +34 -0
  87. package/dist/core/catalog-migration.js.map +7 -0
  88. package/dist/core/changeset-analysis.js +421 -0
  89. package/dist/core/changeset-analysis.js.map +7 -0
  90. package/dist/core/changeset-base-index.js +160 -0
  91. package/dist/core/changeset-base-index.js.map +7 -0
  92. package/dist/core/changeset-brief-compact.js +256 -0
  93. package/dist/core/changeset-brief-compact.js.map +7 -0
  94. package/dist/core/changeset-brief-delta.js +102 -0
  95. package/dist/core/changeset-brief-delta.js.map +7 -0
  96. package/dist/core/changeset-graph.js +281 -0
  97. package/dist/core/changeset-graph.js.map +7 -0
  98. package/dist/core/changeset-only-guard.js +32 -0
  99. package/dist/core/changeset-only-guard.js.map +7 -0
  100. package/dist/core/changeset-summary.js +68 -0
  101. package/dist/core/changeset-summary.js.map +7 -0
  102. package/dist/core/changeset-validator.js +66 -20
  103. package/dist/core/changeset-validator.js.map +2 -2
  104. package/dist/core/changeset-verify.js +848 -0
  105. package/dist/core/changeset-verify.js.map +7 -0
  106. package/dist/core/changeset.js +56 -9
  107. package/dist/core/changeset.js.map +2 -2
  108. package/dist/core/element-type-migration.js +145 -0
  109. package/dist/core/element-type-migration.js.map +7 -0
  110. package/dist/core/extraction-observability.js +161 -0
  111. package/dist/core/extraction-observability.js.map +7 -0
  112. package/dist/core/farm-manifest.js +12 -6
  113. package/dist/core/farm-manifest.js.map +2 -2
  114. package/dist/core/farm-sync-engine.js +1 -1
  115. package/dist/core/farm-sync-engine.js.map +2 -2
  116. package/dist/core/farm-sync-state.js +10 -2
  117. package/dist/core/farm-sync-state.js.map +2 -2
  118. package/dist/core/migration-registry.js +88 -47
  119. package/dist/core/migration-registry.js.map +2 -2
  120. package/dist/core/model-upgrade.js +102 -0
  121. package/dist/core/model-upgrade.js.map +7 -0
  122. package/dist/core/model.js +82 -30
  123. package/dist/core/model.js.map +2 -2
  124. package/dist/core/mutation-handler.js +71 -6
  125. package/dist/core/mutation-handler.js.map +2 -2
  126. package/dist/core/project-init.js +53 -0
  127. package/dist/core/project-init.js.map +7 -0
  128. package/dist/core/relationship-migration-table.js +6639 -0
  129. package/dist/core/relationship-migration-table.js.map +7 -0
  130. package/dist/core/relationship-migration.js +272 -0
  131. package/dist/core/relationship-migration.js.map +7 -0
  132. package/dist/core/relationship-prune.js +49 -0
  133. package/dist/core/relationship-prune.js.map +7 -0
  134. package/dist/core/relationship-staging.js +161 -0
  135. package/dist/core/relationship-staging.js.map +7 -0
  136. package/dist/core/relationships.js +26 -4
  137. package/dist/core/relationships.js.map +2 -2
  138. package/dist/core/report-data-model.js +7 -13
  139. package/dist/core/report-data-model.js.map +2 -2
  140. package/dist/core/staged-changeset-storage.js +145 -18
  141. package/dist/core/staged-changeset-storage.js.map +2 -2
  142. package/dist/core/staged-source-reference.js +28 -0
  143. package/dist/core/staged-source-reference.js.map +7 -0
  144. package/dist/core/staging-area.js +166 -24
  145. package/dist/core/staging-area.js.map +2 -2
  146. package/dist/core/upgrade-plan.js +117 -0
  147. package/dist/core/upgrade-plan.js.map +7 -0
  148. package/dist/core/virtual-projection.js +13 -5
  149. package/dist/core/virtual-projection.js.map +2 -2
  150. package/dist/export/archimate-exporter.js +1 -0
  151. package/dist/export/archimate-exporter.js.map +2 -2
  152. package/dist/generated/compiled-validators.js +2 -2
  153. package/dist/generated/compiled-validators.js.map +2 -2
  154. package/dist/generated/layer-registry.js +16 -16
  155. package/dist/generated/layer-registry.js.map +2 -2
  156. package/dist/generated/node-types.js +186 -168
  157. package/dist/generated/node-types.js.map +2 -2
  158. package/dist/generated/relationship-index.js +2468 -7913
  159. package/dist/generated/relationship-index.js.map +2 -2
  160. package/dist/integrations/claude_code/.claude-plugin/plugin.json +24 -0
  161. package/dist/integrations/claude_code/agents/dr-architect.md +30 -3
  162. package/dist/integrations/claude_code/agents/dr-extractor.md +8 -2
  163. package/dist/integrations/claude_code/commands/dr-analyzer.md +565 -0
  164. package/dist/integrations/claude_code/commands/dr-changeset.md +2 -1
  165. package/dist/integrations/claude_code/commands/dr-map.md +20 -1
  166. package/dist/integrations/claude_code/commands/dr-plan.md +66 -0
  167. package/dist/integrations/claude_code/commands/dr-relate.md +106 -96
  168. package/dist/integrations/claude_code/commands/dr-verify.md +45 -2
  169. package/dist/integrations/claude_code/docs/END_TO_END_WALKTHROUGH.md +14 -0
  170. package/dist/integrations/claude_code/docs/MCP_SERVER.md +47 -26
  171. package/dist/integrations/claude_code/docs/QUICK_START.md +37 -8
  172. package/dist/integrations/claude_code/docs/README.md +68 -2
  173. package/dist/integrations/claude_code/plugin-agents/dr-advisor.md +255 -0
  174. package/dist/integrations/claude_code/plugin-agents/dr-architect.md +306 -0
  175. package/dist/integrations/claude_code/skills/dr_01_motivation_layer/SKILL.md +93 -72
  176. package/dist/integrations/claude_code/skills/dr_02_business_layer/SKILL.md +163 -126
  177. package/dist/integrations/claude_code/skills/dr_03_product_layer/SKILL.md +161 -126
  178. package/dist/integrations/claude_code/skills/dr_04_security_layer/SKILL.md +153 -133
  179. package/dist/integrations/claude_code/skills/dr_05_application_layer/SKILL.md +129 -100
  180. package/dist/integrations/claude_code/skills/dr_06_technology_layer/SKILL.md +111 -94
  181. package/dist/integrations/claude_code/skills/dr_07_api_layer/SKILL.md +143 -157
  182. package/dist/integrations/claude_code/skills/dr_08_data_model_layer/SKILL.md +117 -33
  183. package/dist/integrations/claude_code/skills/dr_09_dataset_layer/SKILL.md +74 -25
  184. package/dist/integrations/claude_code/skills/dr_10_ux_layer/SKILL.md +88 -12
  185. package/dist/integrations/claude_code/skills/dr_11_navigation_layer/SKILL.md +83 -24
  186. package/dist/integrations/claude_code/skills/dr_12_apm_layer/SKILL.md +57 -12
  187. package/dist/integrations/claude_code/skills/dr_13_testing_layer/SKILL.md +95 -15
  188. package/dist/integrations/claude_code/skills/dr_change_planning/SKILL.md +178 -0
  189. package/dist/integrations/claude_code/skills/dr_changeset_reviewer/SKILL.md +8 -0
  190. package/dist/integrations/claude_code/skills/dr_engineering_guide/SKILL.md +6 -1
  191. package/dist/integrations/github_copilot/agents/dr-architect.md +3 -1
  192. package/dist/integrations/github_copilot/skills/dr_01_motivation_layer/SKILL.md +182 -102
  193. package/dist/integrations/github_copilot/skills/dr_02_business_layer/SKILL.md +266 -148
  194. package/dist/integrations/github_copilot/skills/dr_03_product_layer/SKILL.md +547 -86
  195. package/dist/integrations/github_copilot/skills/dr_04_security_layer/SKILL.md +164 -169
  196. package/dist/integrations/github_copilot/skills/dr_05_application_layer/SKILL.md +420 -150
  197. package/dist/integrations/github_copilot/skills/dr_06_technology_layer/SKILL.md +331 -138
  198. package/dist/integrations/github_copilot/skills/dr_07_api_layer/SKILL.md +265 -201
  199. package/dist/integrations/github_copilot/skills/dr_08_data_model_layer/SKILL.md +181 -58
  200. package/dist/integrations/github_copilot/skills/dr_09_dataset_layer/SKILL.md +209 -57
  201. package/dist/integrations/github_copilot/skills/dr_10_ux_layer/SKILL.md +277 -112
  202. package/dist/integrations/github_copilot/skills/dr_11_navigation_layer/SKILL.md +219 -70
  203. package/dist/integrations/github_copilot/skills/dr_12_apm_layer/SKILL.md +189 -105
  204. package/dist/integrations/github_copilot/skills/dr_13_testing_layer/SKILL.md +225 -102
  205. package/dist/integrations/github_copilot/skills/dr_change_planning/SKILL.md +177 -0
  206. package/dist/integrations/github_copilot/skills/dr_changeset_reviewer/SKILL.md +3 -0
  207. package/dist/integrations/hash-utils.js.map +2 -2
  208. package/dist/mcp/api-key-manager.js +14 -1
  209. package/dist/mcp/api-key-manager.js.map +2 -2
  210. package/dist/mcp/changeset-only.js +45 -0
  211. package/dist/mcp/changeset-only.js.map +7 -0
  212. package/dist/mcp/project-root.js +85 -0
  213. package/dist/mcp/project-root.js.map +7 -0
  214. package/dist/mcp/server-instructions.js +27 -0
  215. package/dist/mcp/server-instructions.js.map +7 -0
  216. package/dist/mcp/strict-schema.js +52 -0
  217. package/dist/mcp/strict-schema.js.map +7 -0
  218. package/dist/mcp/tool-registry.js +55 -5
  219. package/dist/mcp/tool-registry.js.map +2 -2
  220. package/dist/mcp/tools/changeset-analysis-tools.js +98 -0
  221. package/dist/mcp/tools/changeset-analysis-tools.js.map +7 -0
  222. package/dist/mcp/tools/changeset-commit.js +224 -0
  223. package/dist/mcp/tools/changeset-commit.js.map +7 -0
  224. package/dist/mcp/tools/changeset-editing.js +260 -0
  225. package/dist/mcp/tools/changeset-editing.js.map +7 -0
  226. package/dist/mcp/tools/changeset-lifecycle.js +83 -0
  227. package/dist/mcp/tools/changeset-lifecycle.js.map +7 -0
  228. package/dist/mcp/tools/changeset-shared.js +31 -0
  229. package/dist/mcp/tools/changeset-shared.js.map +7 -0
  230. package/dist/mcp/tools/changeset-show.js +17 -1
  231. package/dist/mcp/tools/changeset-show.js.map +2 -2
  232. package/dist/mcp/tools/changeset-verify.js +49 -0
  233. package/dist/mcp/tools/changeset-verify.js.map +7 -0
  234. package/dist/mcp/tools/codebase-extract.js +836 -0
  235. package/dist/mcp/tools/codebase-extract.js.map +7 -0
  236. package/dist/mcp/tools/codebase-index.js +125 -0
  237. package/dist/mcp/tools/codebase-index.js.map +7 -0
  238. package/dist/mcp/tools/codebase-shared.js +265 -0
  239. package/dist/mcp/tools/codebase-shared.js.map +7 -0
  240. package/dist/mcp/tools/codebase-verify.js +48 -0
  241. package/dist/mcp/tools/codebase-verify.js.map +7 -0
  242. package/dist/mcp/tools/index.js +34 -1
  243. package/dist/mcp/tools/index.js.map +2 -2
  244. package/dist/mcp/tools/model-add.js +191 -74
  245. package/dist/mcp/tools/model-add.js.map +2 -2
  246. package/dist/mcp/tools/model-delete.js +2 -2
  247. package/dist/mcp/tools/model-delete.js.map +2 -2
  248. package/dist/mcp/tools/model-search.js +14 -0
  249. package/dist/mcp/tools/model-search.js.map +2 -2
  250. package/dist/mcp/tools/model-show.js +29 -2
  251. package/dist/mcp/tools/model-show.js.map +2 -2
  252. package/dist/mcp/tools/model-trace.js +93 -30
  253. package/dist/mcp/tools/model-trace.js.map +2 -2
  254. package/dist/mcp/tools/model-update.js +46 -26
  255. package/dist/mcp/tools/model-update.js.map +2 -2
  256. package/dist/mcp/tools/model-validate.js +46 -4
  257. package/dist/mcp/tools/model-validate.js.map +2 -2
  258. package/dist/mcp/tools/project-status-collectors.js +381 -0
  259. package/dist/mcp/tools/project-status-collectors.js.map +7 -0
  260. package/dist/mcp/tools/project-status.js +237 -0
  261. package/dist/mcp/tools/project-status.js.map +7 -0
  262. package/dist/mcp/tools/project-tools.js +505 -0
  263. package/dist/mcp/tools/project-tools.js.map +7 -0
  264. package/dist/mcp/tools/relationship-tools.js +167 -0
  265. package/dist/mcp/tools/relationship-tools.js.map +7 -0
  266. package/dist/mcp/tools/review-open.js +210 -0
  267. package/dist/mcp/tools/review-open.js.map +7 -0
  268. package/dist/mcp/tools/shared.js +35 -4
  269. package/dist/mcp/tools/shared.js.map +2 -2
  270. package/dist/mcp/tools/spec-type.js +90 -0
  271. package/dist/mcp/tools/spec-type.js.map +7 -0
  272. package/dist/reports/model-report-orchestrator.js +31 -2
  273. package/dist/reports/model-report-orchestrator.js.map +2 -2
  274. package/dist/schemas/bundled/analyzers/cbm.json +1200 -70
  275. package/dist/schemas/bundled/analyzers/manifest.json +2 -2
  276. package/dist/schemas/bundled/api.json +1029 -1658
  277. package/dist/schemas/bundled/apm.json +499 -734
  278. package/dist/schemas/bundled/application.json +735 -371
  279. package/dist/schemas/bundled/base.json +3 -220
  280. package/dist/schemas/bundled/business.json +452 -366
  281. package/dist/schemas/bundled/data-model.json +395 -411
  282. package/dist/schemas/bundled/data-store.json +334 -558
  283. package/dist/schemas/bundled/manifest.json +18 -18
  284. package/dist/schemas/bundled/motivation.json +349 -368
  285. package/dist/schemas/bundled/navigation.json +415 -731
  286. package/dist/schemas/bundled/product.json +325 -159
  287. package/dist/schemas/bundled/security.json +864 -1232
  288. package/dist/schemas/bundled/technology.json +574 -703
  289. package/dist/schemas/bundled/testing.json +865 -1646
  290. package/dist/schemas/bundled/ux.json +739 -1352
  291. package/dist/server/schemas.js +8 -0
  292. package/dist/server/schemas.js.map +2 -2
  293. package/dist/server/server.js +686 -231
  294. package/dist/server/server.js.map +3 -3
  295. package/dist/server/viewer-registry.js +264 -0
  296. package/dist/server/viewer-registry.js.map +7 -0
  297. package/dist/server-entry.js +2 -1
  298. package/dist/server-entry.js.map +2 -2
  299. package/dist/telemetry/index.js +1 -1
  300. package/dist/utils/ansi-suppressor.js +6 -8
  301. package/dist/utils/ansi-suppressor.js.map +2 -2
  302. package/dist/utils/attribute-patch.js +41 -0
  303. package/dist/utils/attribute-patch.js.map +7 -0
  304. package/dist/utils/error-hints.js +29 -0
  305. package/dist/utils/error-hints.js.map +7 -0
  306. package/dist/utils/errors.js +9 -3
  307. package/dist/utils/errors.js.map +2 -2
  308. package/dist/utils/id-generator.js +5 -2
  309. package/dist/utils/id-generator.js.map +2 -2
  310. package/dist/utils/project-paths.js +26 -1
  311. package/dist/utils/project-paths.js.map +2 -2
  312. package/dist/utils/source-reference.js +64 -31
  313. package/dist/utils/source-reference.js.map +2 -2
  314. package/dist/utils/spec-version.js +2 -2
  315. package/dist/utils/spec-version.js.map +1 -1
  316. package/dist/validators/composed-reference-validator.js +5 -27
  317. package/dist/validators/composed-reference-validator.js.map +2 -2
  318. package/dist/validators/model-warnings.js +28 -0
  319. package/dist/validators/model-warnings.js.map +7 -0
  320. package/dist/validators/reference-validator.js +0 -7
  321. package/dist/validators/reference-validator.js.map +2 -2
  322. package/dist/validators/relationship-schema-validator.js +3 -3
  323. package/dist/validators/relationship-schema-validator.js.map +2 -2
  324. package/dist/validators/schema-validator.js +27 -9
  325. package/dist/validators/schema-validator.js.map +2 -2
  326. package/dist/validators/types.js.map +1 -1
  327. package/dist/viewer/README.md +6 -6
  328. package/dist/viewer/assets/main-CUOQGGRA.css +1 -0
  329. package/dist/viewer/assets/main-DvH3gYrI.js +84 -0
  330. package/dist/viewer/index.html +2 -2
  331. package/dist/viewer/manifest.json +10 -10
  332. package/dist/viewer/version.json +1 -1
  333. package/package.json +2 -1
  334. package/dist/viewer/assets/main-B7AOQXXX.js +0 -81
  335. package/dist/viewer/assets/main-vdrFrG7q.css +0 -1
@@ -15,17 +15,50 @@ triggers:
15
15
  "terraform",
16
16
  "archimate technology"
17
17
  ]
18
- version: 0.8.1
18
+ version: 0.8.3
19
19
  ---
20
20
 
21
21
  # Technology Layer Skill
22
22
 
23
23
  **Layer Number:** 05
24
- **Specification:** Metadata Model Spec v0.8.1
24
+ **Specification:** Metadata Model Spec v0.8.3
25
25
  **Purpose:** Describes the technology infrastructure including hardware, software, networks, and facilities that support applications.
26
26
 
27
27
  ---
28
28
 
29
+ ## CRITICAL: Valid Element Types
30
+
31
+ > ⚠️ Only 13 spec-defined types may be used in the technology layer.
32
+
33
+ **VALID types** (use exactly these strings in `type:` fields and element IDs):
34
+
35
+ ```
36
+ artifact | communicationnetwork | device | node | path | systemsoftware |
37
+ technologycollaboration | technologyevent | technologyfunction |
38
+ technologyinteraction | technologyinterface | technologyprocess | technologyservice
39
+ ```
40
+
41
+ **INVALID types** — these do NOT exist in the spec:
42
+
43
+ ```
44
+ stack | framework | library | tool | runtime | cicd | deployment | protocol | worker
45
+ ```
46
+
47
+ Element IDs MUST follow: `technology.{valid-spec-type}.{kebab-name}`
48
+
49
+ ```
50
+ ✅ technology.systemsoftware.react
51
+ ✅ technology.artifact.react-flow
52
+ ✅ technology.technologyprocess.github-actions
53
+ ✅ technology.technologyservice.github-pages
54
+ ❌ technology.framework.react (invalid — 'framework' is not a spec type)
55
+ ❌ technology.library.react-flow (invalid — 'library' is not a spec type)
56
+ ❌ technology.cicd.github-actions (invalid)
57
+ ❌ technology.stack.react (invalid — 'stack' does not exist)
58
+ ```
59
+
60
+ ---
61
+
29
62
  ## Layer Overview
30
63
 
31
64
  The Technology Layer captures **infrastructure and platform**:
@@ -63,41 +96,224 @@ This layer uses **ArchiMate 3.2 Technology Layer** standard with optional proper
63
96
 
64
97
  ---
65
98
 
99
+ ## Technology Classification Guide
100
+
101
+ Given what you see in the codebase, which spec type does it become?
102
+
103
+ | What You See in the Codebase | Spec Type | Required Attribute | Example ID |
104
+ | ---------------------------------------------------- | ------------------------- | ------------------------------------ | --------------------------------------------------- |
105
+ | Framework-grade npm library (see heuristic below) | `systemsoftware` | `softwareType: middleware` | `technology.systemsoftware.zustand` |
106
+ | Utility npm library (see heuristic below) | `artifact` | `artifactType: library` | `technology.artifact.jszip` |
107
+ | JavaScript/CSS framework (`react`, `tailwindcss`) | `systemsoftware` | `softwareType: middleware` | `technology.systemsoftware.react` |
108
+ | Language runtime (`node.js`, `python`, `bun`) | `systemsoftware` | `softwareType: middleware` | `technology.systemsoftware.nodejs` |
109
+ | Container runtime (`docker`) | `systemsoftware` | `softwareType: container-runtime` | `technology.systemsoftware.docker` |
110
+ | Build tool / compiler (`vite`, `tsc`, `eslint`) | `technologyprocess` | — | `technology.technologyprocess.vite` |
111
+ | CI/CD pipeline or workflow | `technologyprocess` | — | `technology.technologyprocess.github-actions` |
112
+ | Hosted platform service (GitHub Pages, npm registry) | `technologyservice` | `serviceType: compute` or `storage` | `technology.technologyservice.github-pages` |
113
+ | Browser JavaScript runtime environment | `node` | `nodeType: container` | `technology.node.browser-runtime` |
114
+ | Development server | `node` | `nodeType: virtual-machine` | `technology.node.dev-server` |
115
+ | Backend server | `node` | `nodeType: virtual-machine` | `technology.node.dr-cli-server` |
116
+ | Build output / distributable / npm package | `artifact` | `artifactType: archive` or `library` | `technology.artifact.dist-embedded` |
117
+ | Network protocol / communication channel | `communicationnetwork` | `networkType: internet` or `lan` | `technology.communicationnetwork.websocket-channel` |
118
+ | HTTP/WebSocket port or endpoint (access point) | `technologyinterface` | `protocol: http/https/websocket` | `technology.technologyinterface.vite-dev-http` |
119
+ | Infrastructure function (HMR, caching, bundling) | `technologyfunction` | — | `technology.technologyfunction.hot-module-reload` |
120
+ | Off-thread Web Worker | `technologyfunction` | — | `technology.technologyfunction.off-thread-layout` |
121
+ | Group of nodes/services working together | `technologycollaboration` | — | `technology.technologycollaboration.ci-cd-suite` |
122
+
123
+ ### Framework-Grade Library vs. Utility Library
124
+
125
+ When a package is an npm library, ask: does it fundamentally define the application's runtime capabilities (rendering engine, state management, routing, layout)?
126
+
127
+ **YES — use `systemsoftware` (softwareType: middleware):**
128
+ `react`, `vue`, `angular`, `@xyflow/react`, `zustand`, `@tanstack/react-router`, `@tanstack/react-query`, `tailwindcss`, `elkjs`, `dagre`, `d3-force`, `@hpcc-js/wasm`, `libavoid-js`
129
+
130
+ **NO — use `artifact` (artifactType: library):**
131
+ Utility helpers (`lodash`, `date-fns`), export utilities (`jszip`, `html-to-image`), markdown renderers (`react-markdown`), polyfills, adapters
132
+
133
+ The distinction: `systemsoftware` = runtime platform the app is built **on**; `artifact` = code the app uses for a specific utility capability.
134
+
135
+ ---
136
+
137
+ ## Frontend / SPA Codebase Detection Patterns
138
+
139
+ These patterns cover the actual structure of browser-based React/TypeScript SPAs. Always map to valid spec types using the Classification Guide above.
140
+
141
+ ### Pattern: package.json dependencies
142
+
143
+ ```json
144
+ {
145
+ "dependencies": {
146
+ "@xyflow/react": "12.9.3",
147
+ "zustand": "5.0.8",
148
+ "react": "19.2.0",
149
+ "@tanstack/react-query": "5.51.0",
150
+ "libavoid-js": "0.5.0-beta.5",
151
+ "@hpcc-js/wasm": "2.30.0",
152
+ "jszip": "3.10.1",
153
+ "html-to-image": "1.11.13",
154
+ "react-markdown": "9.0.1",
155
+ "msw": "2.6.8"
156
+ },
157
+ "devDependencies": {
158
+ "vite": "7.2.4",
159
+ "typescript": "5.9.3",
160
+ "eslint": "9.x"
161
+ }
162
+ }
163
+ ```
164
+
165
+ → `react` → `technology.systemsoftware.react` (softwareType: middleware)
166
+ → `@xyflow/react` → `technology.systemsoftware.react-flow` (softwareType: middleware — graph rendering engine)
167
+ → `zustand` → `technology.systemsoftware.zustand` (softwareType: middleware — state management)
168
+ → `@tanstack/react-query` → `technology.systemsoftware.react-query` (softwareType: middleware — server state management)
169
+ → `libavoid-js` → `technology.systemsoftware.libavoid-js` (softwareType: middleware — WASM edge routing)
170
+ → `@hpcc-js/wasm` → `technology.systemsoftware.graphviz-wasm` (softwareType: middleware — graph layout WASM)
171
+ → `jszip` → `technology.artifact.jszip` (artifactType: library — ZIP export utility)
172
+ → `html-to-image` → `technology.artifact.html-to-image` (artifactType: library — PNG/SVG export utility)
173
+ → `react-markdown` → `technology.artifact.react-markdown` (artifactType: library — markdown rendering utility)
174
+ → `msw` → `technology.technologyprocess.msw` (Mock Service Worker — test tooling process)
175
+ → `vite` → `technology.technologyprocess.vite` (build tool)
176
+ → `typescript` → `technology.systemsoftware.typescript` (softwareType: middleware — compiler)
177
+ → `eslint` → `technology.technologyprocess.eslint` (linting process)
178
+
179
+ ### Pattern: GitHub Actions CI/CD workflow
180
+
181
+ ```yaml
182
+ name: CI
183
+ on: [push, pull_request]
184
+ jobs:
185
+ build: ...
186
+ test: ...
187
+ deploy: ...
188
+ ```
189
+
190
+ → `technology.technologyprocess.github-actions` (top-level workflow)
191
+ → Each job: `technology.technologyprocess.build-pipeline`, `technology.technologyprocess.deploy-pipeline`
192
+ → NOT `technology.cicd.github-actions` — use `technologyprocess`
193
+
194
+ ### Pattern: Static site hosting (GitHub Pages, Netlify, Vercel)
195
+
196
+ ```yaml
197
+ # .github/workflows/deploy.yml
198
+ - name: Deploy to GitHub Pages
199
+ uses: actions/deploy-pages@v2
200
+ ```
201
+
202
+ → `technology.technologyservice.github-pages` (serviceType: compute)
203
+ → NOT `technology.stack.github-pages` or `technology.deployment.github-pages`
204
+
205
+ ### Pattern: Vite dev server
206
+
207
+ ```typescript
208
+ // vite.config.ts
209
+ export default defineConfig({
210
+ server: { port: 3001 },
211
+ build: { outDir: "dist" }
212
+ });
213
+ ```
214
+
215
+ → `technology.node.dev-server` (nodeType: virtual-machine, port: 3001)
216
+ → `technology.technologyinterface.vite-dev-http` (protocol: http, port: 3001)
217
+ → `technology.artifact.dist-standalone` (artifactType: archive) — build output
218
+
219
+ ### Pattern: Web Worker
220
+
221
+ ```javascript
222
+ // public/workers/layoutWorker.js
223
+ self.onmessage = function (e) {
224
+ const result = runDagreLayout(e.data);
225
+ self.postMessage(result);
226
+ };
227
+ ```
228
+
229
+ → `technology.technologyfunction.off-thread-layout`
230
+ → NOT a separate `worker` type — use `technologyfunction`
231
+
232
+ ### Pattern: Browser runtime
233
+
234
+ The browser that runs a React SPA is the primary Node (host):
235
+
236
+ → `technology.node.browser-runtime` (nodeType: container)
237
+ → It `serves` `application.applicationcomponent.viewer-app`
238
+
239
+ ---
240
+
241
+ ## Coverage Completeness Checklist
242
+
243
+ Before declaring technology layer extraction complete, verify each type was considered:
244
+
245
+ ```
246
+ □ systemsoftware — runtimes (Node.js), frameworks (React), compilers (TypeScript), Docker
247
+ □ artifact — ALL npm library dependencies, build outputs (dist/), docker images, npm package
248
+ □ node — browser runtime, dev server, backend server, CI runner
249
+ □ technologyprocess — every CI/CD pipeline, build step, automation tool (Vite, ESLint, GitHub Actions)
250
+ □ technologyservice — hosted services: GitHub Pages, npm registry, Docker Hub, CDN
251
+ □ technologyinterface — dev server port, WebSocket endpoint, REST API endpoint
252
+ □ technologyfunction — Web Workers, HMR, caching, bundling algorithms
253
+ □ communicationnetwork — internet connection, WebSocket channel, browser network context
254
+ □ technologycollaboration — groups: CI/CD suite, deployment pipeline (multiple nodes working together)
255
+ □ artifact (configs) — configuration files as artifacts (vite.config.ts, tsconfig.json)
256
+
257
+ Types less likely to apply to a frontend SPA (still worth considering):
258
+ - device: physical hardware (almost never for pure frontend)
259
+ - path: explicit network paths (rare)
260
+ - technologyevent: deployment events, build failures, alerts
261
+ - technologyinteraction: collective behavior across nodes (e.g., CDN + origin server)
262
+ ```
263
+
264
+ ---
265
+
66
266
  ## Intra-Layer Relationships
67
267
 
268
+ Nodes and system software are `assigned-to` the behaviour they perform; an interface is `assigned-to`
269
+ the services it offers and `serves` the behaviour that uses it. Functions, processes and interactions
270
+ realize services; events trigger behaviour, and structure does not trigger. Artifacts are passive.
271
+ Networks realize paths, and networks and paths `connects` nodes and devices.
272
+
68
273
  ### Structural Relationships
69
274
 
70
- | Source Type | Predicate | Target Type | Example |
71
- | ----------------------- | --------------- | --------------------- | ------------------------------------------------- |
72
- | Device | composes | Node | "Physical Server" composes "Virtual Machine" |
73
- | Node | composes | TechnologyInterface | "API Server" composes "HTTPS Endpoint" |
74
- | SystemSoftware | composes | TechnologyInterface | "PostgreSQL" composes "SQL Interface" |
75
- | Node | aggregates | Device | Cluster aggregates multiple physical servers |
76
- | TechnologyCollaboration | aggregates | Node | "K8s Cluster" aggregates "Worker Nodes" |
77
- | Artifact | specializes | Artifact | "CustomerDatabase" specializes "Database" |
78
- | Path | realizes | CommunicationNetwork | "VPN Tunnel" realizes "Secure Network" |
79
- | TechnologyFunction | realizes | TechnologyService | "Load Balancing" realizes "Load Balancer Service" |
80
- | TechnologyProcess | realizes | TechnologyService | "CI/CD Pipeline" realizes "Deployment Service" |
81
- | SystemSoftware | realizes | TechnologyService | "PostgreSQL" realizes "Database Service" |
82
- | Node | assigned-to | TechnologyFunction | "Edge Server" assigned to "CDN Caching" |
83
- | TechnologyCollaboration | assigned-to | TechnologyInteraction | Cluster performs replication |
84
- | Path | associated-with | Node | Network path connects nodes |
85
- | Device | associated-with | CommunicationNetwork | Device connected to network |
86
- | TechnologyInterface | serves | TechnologyService | Interface provides service access |
275
+ | Source Type | Predicate | Target Type | Example |
276
+ | ----------------------- | ----------- | --------------------- | ------------------------------------------------------- |
277
+ | Node | composes | Device | "Bare-metal Cluster" composes "Dell R740 Server" |
278
+ | Node | composes | SystemSoftware | "Web Server VM" composes "NGINX" |
279
+ | Node | composes | TechnologyInterface | "API Server" composes "HTTPS Endpoint" |
280
+ | Node | composes | Artifact | "EKS Worker" composes "User Service Image" (deployed) |
281
+ | SystemSoftware | provides | TechnologyInterface | "PostgreSQL" provides "SQL Interface" |
282
+ | SystemSoftware | depends-on | SystemSoftware | "Kafka" depends on "ZooKeeper" |
283
+ | Artifact | composes | Artifact | "Helm Chart" composes "values.yaml" |
284
+ | Artifact | depends-on | Artifact | "User Service Image" depends on "Node 20 Base Image" |
285
+ | Artifact | realizes | SystemSoftware | "postgres:16 image" realizes "PostgreSQL 16" |
286
+ | TechnologyCollaboration | aggregates | Node | "K8s Cluster" aggregates "Worker Nodes" |
287
+ | TechnologyCollaboration | aggregates | SystemSoftware | "Postgres HA Pair" aggregates "Postgres Primary" |
288
+ | CommunicationNetwork | aggregates | CommunicationNetwork | "Production VPC" aggregates "Private Subnet 1a" |
289
+ | CommunicationNetwork | realizes | Path | "Corporate WAN" realizes "Direct Connect Link" |
290
+ | CommunicationNetwork | connects | Node | "Production VPC" connects "EKS Cluster" |
291
+ | CommunicationNetwork | connects | Device | "Office LAN" connects "Edge Gateway" |
292
+ | Path | connects | Node | "Direct Connect Link" connects "On-Premise K8s" |
293
+ | SystemSoftware | realizes | TechnologyService | "PostgreSQL" realizes "Database Service" |
294
+ | Node | realizes | TechnologyService | "RDS Instance" realizes "Managed Database Service" |
295
+ | TechnologyFunction | realizes | TechnologyService | "Load Balancing" realizes "Load Balancer Service" |
296
+ | TechnologyProcess | realizes | TechnologyService | "CI/CD Pipeline" realizes "Deployment Service" |
297
+ | TechnologyInterface | assigned-to | TechnologyService | "Postgres Wire Endpoint" assigned to "Database Service" |
298
+ | Node | assigned-to | TechnologyFunction | "Edge Server" assigned to "CDN Caching" |
299
+ | SystemSoftware | assigned-to | TechnologyFunction | "NGINX" assigned to "Load Balancing" |
300
+ | TechnologyCollaboration | assigned-to | TechnologyInteraction | "Postgres HA Pair" assigned to "Streaming Replication" |
87
301
 
88
302
  ### Behavioral Relationships
89
303
 
90
- | Source Type | Predicate | Target Type | Example |
91
- | --------------------- | --------- | ------------------ | --------------------------------------------------- |
92
- | TechnologyEvent | triggers | TechnologyProcess | "Node Failure" triggers "Failover Process" |
93
- | TechnologyEvent | triggers | TechnologyFunction | "CPU Threshold" triggers "Auto-scaling Function" |
94
- | TechnologyProcess | triggers | TechnologyEvent | "Deployment Complete" triggers "Health Check Event" |
95
- | TechnologyProcess | flows-to | TechnologyProcess | "Build" flows to "Deploy" |
96
- | TechnologyService | flows-to | TechnologyService | Service dependency chain |
97
- | SystemSoftware | accesses | Artifact | "Database" accesses "Data Files" |
98
- | TechnologyFunction | accesses | Artifact | "Backup Function" accesses "Backup Files" |
99
- | TechnologyProcess | accesses | Artifact | "Deployment" accesses "Docker Images" |
100
- | TechnologyInteraction | accesses | Artifact | "Replication" accesses "Database Replica" |
304
+ | Source Type | Predicate | Target Type | Example |
305
+ | --------------------- | --------- | ------------------ | -------------------------------------------------- |
306
+ | TechnologyEvent | triggers | TechnologyProcess | "Node Failure" triggers "Failover Process" |
307
+ | TechnologyEvent | triggers | TechnologyFunction | "CPU Threshold Exceeded" triggers "Auto-scaling" |
308
+ | TechnologyProcess | triggers | TechnologyEvent | "Deploy to K8s" triggers "Deployment Completed" |
309
+ | TechnologyProcess | composes | TechnologyProcess | "CI/CD Pipeline" composes "Build Image" |
310
+ | TechnologyInterface | serves | TechnologyProcess | "Kubernetes API" serves "Deploy to K8s" |
311
+ | TechnologyFunction | flows-to | TechnologyProcess | "Health Checking" flows to "Node Recovery" |
312
+ | TechnologyService | serves | TechnologyService | "Storage Service" serves "Database Service" |
313
+ | TechnologyProcess | accesses | Artifact | "Deploy to K8s" accesses "User Service Image" |
314
+ | SystemSoftware | accesses | Artifact | "PostgreSQL" accesses "Data Files" |
315
+ | TechnologyFunction | accesses | Artifact | "Database Backup" accesses "Backup Files" |
316
+ | TechnologyInteraction | accesses | Artifact | "Streaming Replication" accesses "Write-Ahead Log" |
101
317
 
102
318
  ---
103
319
 
@@ -105,37 +321,41 @@ This layer uses **ArchiMate 3.2 Technology Layer** standard with optional proper
105
321
 
106
322
  ### Outgoing References (Technology → Other Layers)
107
323
 
108
- | Target Layer | Reference Type | Example |
109
- | ------------------------- | -------------------------------------------------- | -------------------------------------- |
110
- | **Layer 1 (Motivation)** | TechnologyService supports **Goal** | Infrastructure supports business goals |
111
- | **Layer 1 (Motivation)** | TechnologyService governed by **Principle** | Cloud-native principle |
112
- | **Layer 1 (Motivation)** | Node governed by **Principle** | Infrastructure principles |
113
- | **Layer 1 (Motivation)** | Node constrained by **Constraint** | Budget, region, compliance constraints |
114
- | **Layer 1 (Motivation)** | Node fulfills **Requirement** | Performance, availability requirements |
115
- | **Layer 1 (Motivation)** | SystemSoftware governed by **Principle** | Open-source principle |
116
- | **Layer 1 (Motivation)** | SystemSoftware constrained by **Constraint** | Licensing, version constraints |
117
- | **Layer 1 (Motivation)** | SystemSoftware fulfills **Requirement** | Technical requirements |
118
- | **Layer 1 (Motivation)** | CommunicationNetwork governed by **Principle** | Zero-trust principle |
119
- | **Layer 1 (Motivation)** | CommunicationNetwork constrained by **Constraint** | Network segmentation |
120
- | **Layer 1 (Motivation)** | Artifact constrained by **Constraint** | Data residency, retention |
121
- | **Layer 4 (Application)** | Node hosts **ApplicationComponent** | K8s pod hosts service |
122
- | **Layer 4 (Application)** | TechnologyService serves **ApplicationService** | Database serves application |
123
- | **Layer 4 (Application)** | Artifact stores **DataObject** | Database stores application data |
124
- | **Layer 3 (Security)** | Artifact has **encryption** property | Data-at-rest encryption |
125
- | **Layer 3 (Security)** | Artifact has **classification** property | Data classification level |
126
- | **Layer 3 (Security)** | Artifact has **pii** property | Contains PII |
127
- | **Layer 3 (Security)** | CommunicationNetwork has **security-policy** | Network security rules |
128
- | **Layer 11 (APM)** | TechnologyService has **sla-target** | Availability, latency targets |
129
- | **Layer 11 (APM)** | TechnologyService has **health-check** | Health monitoring endpoint |
130
- | **Layer 11 (APM)** | Node has **monitoring-agent** | APM agent installation |
131
-
132
- ### Incoming References (Lower Layers → Technology)
133
-
134
- Lower layers reference Technology layer to show:
135
-
136
- - Applications depend on infrastructure
137
- - APIs run on technology platforms
138
- - Data stored in technology artifacts
324
+ | Source Type | Predicate | Target Type | Example |
325
+ | ----------------- | --------- | ---------------------------------- | ---------------------------------------------------------- |
326
+ | Node | serves | `application.applicationcomponent` | "EKS Cluster" serves "User Service" |
327
+ | SystemSoftware | serves | `application.applicationcomponent` | "Node.js 20 Runtime" serves "User Service" |
328
+ | TechnologyService | serves | `application.applicationservice` | "Database Service" serves "Customer Management Service" |
329
+ | TechnologyService | serves | `application.applicationfunction` | "Object Storage" serves "saveAttachment" |
330
+ | Artifact | realizes | `application.applicationcomponent` | "user-service:1.4 image" realizes "User Service" |
331
+ | TechnologyService | serves | `api.operation` | "S3 Object Storage" serves "uploadAvatar" |
332
+ | TechnologyService | serves | `data-store.database` | "Amazon RDS" serves "orders-db" |
333
+ | TechnologyService | serves | `apm.exporterconfig` | "OpenTelemetry Collector" serves "OTLP Trace Exporter" |
334
+ | TechnologyService | realizes | `product.softwarecapability` | "Search Cluster Service" realizes "Full-text Search" |
335
+ | TechnologyService | realizes | `motivation.goal` | "Kubernetes Orchestration" realizes "Faster Deployments" |
336
+ | TechnologyService | satisfies | `motivation.requirement` | "Multi-AZ Database Service" satisfies "99.9% Availability" |
337
+ | SystemSoftware | satisfies | `motivation.principle` | "PostgreSQL" satisfies "Prefer Open Source" |
338
+ | SystemSoftware | satisfies | `motivation.constraint` | "PostgreSQL 16" satisfies "Approved License List" |
339
+ | Node | satisfies | `motivation.constraint` | "EU-West Cluster" satisfies "EU Data Residency" |
340
+ | Node | satisfies | `security.securitypolicy` | "Hardened Bastion Host" satisfies "CIS Benchmark Policy" |
341
+ | SystemSoftware | realizes | `security.countermeasure` | "AWS WAF" realizes "SQL Injection Filtering" |
342
+
343
+ Security properties such as encryption-at-rest, data classification, and PII flags are recorded as Artifact attributes, not relationships.
344
+
345
+ ### Incoming References (Other Layers → Technology)
346
+
347
+ | Source Type | Predicate | Target Type | Example |
348
+ | ---------------------------- | ---------- | ----------------- | ------------------------------------------------------- |
349
+ | `api.server` | depends-on | Node | "Production API Server" depends on "EKS Cluster" |
350
+ | `api.securityscheme` | depends-on | SystemSoftware | "OAuth2 Scheme" depends on "Keycloak" |
351
+ | `data-store.database` | depends-on | SystemSoftware | "orders-db" depends on "PostgreSQL 16" |
352
+ | `data-store.database` | depends-on | Node | "orders-db" depends on "Postgres Cluster" |
353
+ | `data-model.jsonschema` | maps-to | Artifact | "Order Schema" maps to "orders.schema.json" |
354
+ | `apm.resource` | references | SystemSoftware | "user-service resource" references "Node.js 20 Runtime" |
355
+ | `apm.span` | monitors | TechnologyService | "db.query span" monitors "Database Service" |
356
+ | `apm.metricinstrument` | monitors | TechnologyService | "db.query.duration" monitors "Database Service" |
357
+ | `ux.librarycomponent` | depends-on | SystemSoftware | "DataGrid" depends on "Browser Runtime" |
358
+ | `testing.testcoveragetarget` | covers | TechnologyService | "Database Integration" target covers "Database Service" |
139
359
 
140
360
  ---
141
361
 
@@ -343,22 +563,18 @@ server {
343
563
  ```bash
344
564
  # Kubernetes cluster
345
565
  dr add technology node "k8s-cluster-prod" \
346
- --properties type=kubernetes-cluster,provider=aws,region=us-east-1,version=1.28 \
347
566
  --description "Production Kubernetes cluster"
348
567
 
349
568
  # Virtual machines
350
569
  dr add technology node "web-server-01" \
351
- --properties type=vm,provider=aws,instance-type=t3.large,az=us-east-1a \
352
570
  --description "Web application server VM"
353
571
 
354
572
  # Serverless function
355
573
  dr add technology node "order-processor-lambda" \
356
- --properties type=serverless-function,provider=aws,runtime=node.11,memory=512 \
357
574
  --description "Lambda function for order processing"
358
575
 
359
576
  # Database cluster
360
577
  dr add technology node "postgres-cluster" \
361
- --properties type=database-cluster,provider=aws,instance-class=db.r5.xlarge \
362
578
  --description "PostgreSQL RDS cluster"
363
579
  ```
364
580
 
@@ -367,22 +583,18 @@ dr add technology node "postgres-cluster" \
367
583
  ```bash
368
584
  # Database system
369
585
  dr add technology system-software "postgresql-14" \
370
- --properties type=database,version=14.7,license=open-source \
371
586
  --description "PostgreSQL relational database"
372
587
 
373
588
  # Container runtime
374
589
  dr add technology system-software "docker" \
375
- --properties type=container-runtime,version=24.0.5 \
376
590
  --description "Docker container runtime"
377
591
 
378
592
  # Web server
379
593
  dr add technology system-software "nginx" \
380
- --properties type=web-server,version=1.24.0,subtype=load-balancer \
381
594
  --description "NGINX web server and load balancer"
382
595
 
383
596
  # Message broker
384
597
  dr add technology system-software "rabbitmq" \
385
- --properties type=message-broker,version=3.12.0,protocol=AMQP \
386
598
  --description "RabbitMQ message broker"
387
599
  ```
388
600
 
@@ -391,22 +603,19 @@ dr add technology system-software "rabbitmq" \
391
603
  ```bash
392
604
  # Infrastructure service
393
605
  dr add technology service "kubernetes-orchestration" \
394
- --properties type=platform,sla-availability=99.95% \
395
606
  --description "Container orchestration platform"
396
607
 
397
608
  # Database service
398
609
  dr add technology service "postgres-database" \
399
- --properties type=database,sla-availability=99.9%,sla-latency=10ms \
400
610
  --description "PostgreSQL database service"
401
611
 
402
612
  # Storage service
403
613
  dr add technology service "s3-object-storage" \
404
- --properties type=storage,provider=aws,storage-class=standard \
405
614
  --description "S3 object storage for files and backups"
406
615
 
407
616
  # Link software to service
408
- dr relationship add "technology/system-software/postgresql-14" \
409
- realizes "technology/service/postgres-database"
617
+ dr relationship add technology.systemsoftware.postgresql-14 \
618
+ technology.technologyservice.postgres-database --predicate realizes
410
619
  ```
411
620
 
412
621
  ### Step 4: Define Communication Networks
@@ -414,17 +623,14 @@ dr relationship add "technology/system-software/postgresql-14" \
414
623
  ```bash
415
624
  # VPC network
416
625
  dr add technology network "production-vpc" \
417
- --properties type=lan,provider=aws,cidr=10.0.0.0/16,region=us-east-1 \
418
626
  --description "Production VPC network"
419
627
 
420
628
  # Subnet
421
629
  dr add technology network "private-subnet-1a" \
422
- --properties type=lan,cidr=10.0.1.0/24,az=us-east-1a,visibility=private \
423
630
  --description "Private subnet in AZ 1a"
424
631
 
425
632
  # VPN
426
633
  dr add technology network "site-to-site-vpn" \
427
- --properties type=vpn,encryption=ipsec,bandwidth=1gbps \
428
634
  --description "Site-to-site VPN to on-premise datacenter"
429
635
  ```
430
636
 
@@ -433,27 +639,23 @@ dr add technology network "site-to-site-vpn" \
433
639
  ```bash
434
640
  # Database artifact
435
641
  dr add technology artifact "customer-database" \
436
- --properties type=database,size=500GB,encryption=aes-256,classification=confidential \
437
642
  --description "Customer data database"
438
643
 
439
644
  # Docker image
440
645
  dr add technology artifact "user-service-image" \
441
- --properties type=docker-image,registry=ecr.aws,tag=v1.2.3 \
442
646
  --description "User service Docker image"
443
647
 
444
648
  # Configuration file
445
649
  dr add technology artifact "app-config" \
446
- --properties type=configuration,format=yaml,version-controlled=true \
447
650
  --description "Application configuration file"
448
651
 
449
652
  # Log files
450
653
  dr add technology artifact "application-logs" \
451
- --properties type=log,retention-period=90d,compression=gzip \
452
654
  --description "Application log files"
453
655
 
454
656
  # Link artifact to node
455
- dr relationship add "technology/node/postgres-cluster" \
456
- stores "technology/artifact/customer-database"
657
+ dr relationship add technology.node.postgres-cluster \
658
+ technology.artifact.customer-database --predicate composes
457
659
  ```
458
660
 
459
661
  ### Step 6: Model Infrastructure as Code
@@ -461,17 +663,14 @@ dr relationship add "technology/node/postgres-cluster" \
461
663
  ```bash
462
664
  # Terraform process
463
665
  dr add technology process "provision-infrastructure" \
464
- --properties pattern=infrastructure-as-code,automation=terraform,repo=github.com/org/infra \
465
666
  --description "Terraform infrastructure provisioning"
466
667
 
467
668
  # Ansible process
468
669
  dr add technology process "configure-servers" \
469
- --properties pattern=configuration-management,automation=ansible,playbook=server-config.yml \
470
670
  --description "Ansible server configuration"
471
671
 
472
672
  # Kubernetes deployment process
473
673
  dr add technology process "deploy-to-k8s" \
474
- --properties pattern=continuous-deployment,automation=kubectl,manifest=k8s/deploy.yaml \
475
674
  --description "Deploy application to Kubernetes"
476
675
  ```
477
676
 
@@ -480,48 +679,45 @@ dr add technology process "deploy-to-k8s" \
480
679
  ```bash
481
680
  # Load balancing
482
681
  dr add technology function "load-balancing" \
483
- --properties strategy=least-conn,health-check-interval=10s \
484
682
  --description "Distribute traffic across backend servers"
485
683
 
486
684
  # Auto-scaling
487
685
  dr add technology function "auto-scaling" \
488
- --properties min-replicas=2,max-replicas=10,cpu-threshold=70% \
489
686
  --description "Automatically scale based on CPU utilization"
490
687
 
491
688
  # Backup
492
689
  dr add technology function "database-backup" \
493
- --properties frequency=daily,retention=30d,type=incremental \
494
690
  --description "Automated database backup"
495
691
 
496
692
  # Assign function to node
497
- dr relationship add "technology/node/k8s-cluster-prod" \
498
- assigned-to "technology/function/auto-scaling"
693
+ dr relationship add technology.node.k8s-cluster-prod \
694
+ technology.technologyfunction.auto-scaling --predicate assigned-to
499
695
  ```
500
696
 
501
697
  ### Step 8: Cross-Layer Integration
502
698
 
503
699
  ```bash
504
700
  # Link to application layer
505
- dr relationship add "technology/node/k8s-cluster-prod" \
506
- hosts "application/component/user-service"
701
+ dr relationship add technology.node.k8s-cluster-prod \
702
+ application.applicationcomponent.user-service --predicate serves
507
703
 
508
704
  # Link to motivation layer
509
- dr relationship add "technology/service/kubernetes-orchestration" \
510
- supports "motivation/goal/improve-deployment-frequency"
705
+ dr relationship add technology.technologyservice.kubernetes-orchestration \
706
+ motivation.goal.improve-deployment-frequency --predicate realizes
511
707
 
512
- dr relationship add "technology/node/k8s-cluster-prod" \
513
- governed-by "motivation/principle/cloud-native-architecture"
708
+ dr relationship add technology.systemsoftware.docker \
709
+ motivation.principle.cloud-native-architecture --predicate satisfies
514
710
 
515
711
  # Link to APM layer
516
- dr relationship add "technology/service/postgres-database" \
517
- monitored-by "apm/metric/database-query-latency"
712
+ dr relationship add apm.metricinstrument.database-query-latency \
713
+ technology.technologyservice.postgres-database --predicate monitors
518
714
  ```
519
715
 
520
716
  ### Step 9: Validate
521
717
 
522
718
  ```bash
523
- dr validate --layer technology
524
- dr validate --validate-relationships
719
+ dr validate --layers technology
720
+ dr validate --relationships
525
721
  ```
526
722
 
527
723
  ---
@@ -532,39 +728,37 @@ dr validate --validate-relationships
532
728
 
533
729
  ```
534
730
  TechnologyCollaboration: "AWS Production Environment"
535
- ├── contains → Node: "EKS Cluster" (provider: aws, region: us-east-1)
536
- │ ├── hosts → ApplicationComponent: "Microservices"
537
- │ └── uses → TechnologyService: "EKS Orchestration"
538
- ├── contains → Node: "RDS PostgreSQL" (provider: aws, multi-az: true)
731
+ ├── aggregates → Node: "EKS Cluster" (provider: aws, region: us-east-1)
732
+ │ └── serves → ApplicationComponent: "Microservices"
733
+ ├── aggregates → Node: "RDS PostgreSQL" (provider: aws, multi-az: true)
539
734
  │ └── realizes → TechnologyService: "Database Service"
540
- ├── contains → Artifact: "S3 Bucket" (provider: aws, storage-class: standard)
541
- └── contains → CommunicationNetwork: "VPC" (cidr: 10.0.0.0/16)
542
- ├── contains → Subnet: "Public Subnet" (cidr: 10.0.1.0/24)
543
- └── contains → Subnet: "Private Subnet" (cidr: 10.0.2.0/24)
735
+ ├── accesses → Artifact: "S3 Bucket" (provider: aws, storage-class: standard)
736
+ └── uses → CommunicationNetwork: "VPC" (cidr: 10.0.0.0/16)
737
+ ├── aggregates → CommunicationNetwork: "Public Subnet" (cidr: 10.0.1.0/24)
738
+ └── aggregates → CommunicationNetwork: "Private Subnet" (cidr: 10.0.2.0/24)
544
739
  ```
545
740
 
546
741
  ### Kubernetes Pattern
547
742
 
743
+ Model the cluster as a Node; namespaces, deployments and pods are usually attributes of that node or
744
+ of the application components it serves, since the catalog has no Node-to-Node composition.
745
+
548
746
  ```
549
- Node: "Kubernetes Cluster"
550
- ├── type: kubernetes-cluster
551
- ├── hosts → Node: "Namespace: production"
552
- │ ├── hosts → Node: "Deployment: user-service"
553
- │ │ ├── replicas: 3
554
- │ │ └── hosts → Node: "Pod: user-service-xyz"
555
- │ │ └── hosts → ApplicationComponent: "UserService"
556
- │ └── uses → Artifact: "ConfigMap: app-config"
557
- └── uses → TechnologyFunction: "Auto-scaling" (HPA)
747
+ Node: "Kubernetes Cluster" (nodeType: kubernetes-cluster)
748
+ ├── composes → SystemSoftware: "containerd"
749
+ ├── composes → Artifact: "ConfigMap: app-config"
750
+ ├── assigned-to → TechnologyFunction: "Auto-scaling" (HPA)
751
+ └── serves → ApplicationComponent: "UserService" (namespace: production, replicas: 3)
558
752
  ```
559
753
 
560
754
  ### Hybrid Cloud Pattern
561
755
 
562
756
  ```
563
757
  TechnologyCollaboration: "Hybrid Cloud Architecture"
564
- ├── contains → Node: "AWS EKS Cluster" (provider: aws)
565
- ├── contains → Node: "On-Premise K8s" (provider: onprem)
566
- ├── connected-by → Path: "Direct Connect" (type: direct-connect)
567
- └── secured-by → CommunicationNetwork: "Zero-Trust Network"
758
+ ├── aggregates → Node: "AWS EKS Cluster" (provider: aws)
759
+ ├── aggregates → Node: "On-Premise K8s" (provider: onprem)
760
+ ├── uses → Path: "Direct Connect" (type: direct-connect)
761
+ └── uses → CommunicationNetwork: "Zero-Trust Network"
568
762
  ```
569
763
 
570
764
  ---
@@ -631,30 +825,29 @@ technology-node:
631
825
  **Add Commands:**
632
826
 
633
827
  ```bash
634
- dr add technology node <name> --properties type=<type>,provider=<provider>
635
- dr add technology system-software <name> --properties type=<type>,version=<version>
636
- dr add technology service <name> --properties type=<type>,sla-availability=<value>
637
- dr add technology network <name> --properties type=<type>,cidr=<cidr>
638
- dr add technology artifact <name> --properties type=<type>,encryption=<encryption>
639
- dr add technology function <name> --properties strategy=<strategy>
640
- dr add technology process <name> --properties automation=<tool>
828
+ dr add technology node <name>
829
+ dr add technology system-software <name>
830
+ dr add technology service <name>
831
+ dr add technology network <name>
832
+ dr add technology artifact <name>
833
+ dr add technology function <name>
834
+ dr add technology process <name>
641
835
  ```
642
836
 
643
837
  **Relationship Commands:**
644
838
 
645
839
  ```bash
646
- dr relationship add <node> hosts <application-component>
647
- dr relationship add <system-software> realizes <service>
648
- dr relationship add <node> assigned-to <function>
649
- dr relationship add <node> stores <artifact>
650
- dr relationship add <network> connects <node>
840
+ dr relationship add <system-software> <service> --predicate realizes
841
+ dr relationship add <node> <function> --predicate assigned-to
842
+ dr relationship add <node> <artifact> --predicate composes
843
+ dr relationship add <network> <node> --predicate connects
651
844
  ```
652
845
 
653
846
  **Cross-Layer Commands:**
654
847
 
655
848
  ```bash
656
- dr relationship add technology/<node> hosts application/<component>
657
- dr relationship add technology/<service> supports motivation/<goal>
658
- dr relationship add technology/<node> governed-by motivation/<principle>
659
- dr relationship add technology/<service> monitored-by apm/<metric>
849
+ dr relationship add <technology-node> <application-component> --predicate serves
850
+ dr relationship add <technology-service> <motivation-goal> --predicate realizes
851
+ dr relationship add <system-software> <motivation-principle> --predicate realizes
852
+ dr relationship add <apm-metric-instrument> <technology-service> --predicate monitors
660
853
  ```