@documentation-robotics/cli 0.1.13 → 0.3.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.
- package/README.md +74 -2
- package/dist/analysis/relationship-classifier.js +2 -9
- package/dist/analysis/relationship-classifier.js.map +2 -2
- package/dist/analyzers/call-graph-utils.js +2 -2
- package/dist/analyzers/call-graph-utils.js.map +2 -2
- package/dist/analyzers/cards/build.js +171 -0
- package/dist/analyzers/cards/build.js.map +7 -0
- package/dist/analyzers/cards/classify.js +42 -0
- package/dist/analyzers/cards/classify.js.map +7 -0
- package/dist/analyzers/cards/edge-index.js +44 -0
- package/dist/analyzers/cards/edge-index.js.map +7 -0
- package/dist/analyzers/cards/facts.js +46 -0
- package/dist/analyzers/cards/facts.js.map +7 -0
- package/dist/analyzers/cards/graph.js +42 -0
- package/dist/analyzers/cards/graph.js.map +7 -0
- package/dist/analyzers/cards/index.js +8 -0
- package/dist/analyzers/cards/index.js.map +7 -0
- package/dist/analyzers/cards/tier0.js +18 -0
- package/dist/analyzers/cards/tier0.js.map +7 -0
- package/dist/analyzers/cards/types.js +1 -0
- package/dist/analyzers/cards/types.js.map +7 -0
- package/dist/analyzers/cbm-analyzer.js +195 -171
- package/dist/analyzers/cbm-analyzer.js.map +2 -2
- package/dist/analyzers/cbm-responses.js +336 -0
- package/dist/analyzers/cbm-responses.js.map +7 -0
- package/dist/analyzers/edge-relationships.js +45 -0
- package/dist/analyzers/edge-relationships.js.map +7 -0
- package/dist/analyzers/mapping-loader.js +9 -0
- package/dist/analyzers/mapping-loader.js.map +2 -2
- package/dist/analyzers/tier0-rules.js +153 -0
- package/dist/analyzers/tier0-rules.js.map +7 -0
- package/dist/analyzers/types.js.map +1 -1
- package/dist/analyzers/verify-engine.js +22 -19
- package/dist/analyzers/verify-engine.js.map +2 -2
- package/dist/audit/relationships/ai/prompts.js +10 -10
- package/dist/audit/relationships/ai/prompts.js.map +2 -2
- package/dist/audit/relationships/analysis/layer-templates.js +52 -52
- package/dist/audit/relationships/analysis/layer-templates.js.map +1 -1
- package/dist/cli.js +112 -28
- package/dist/cli.js.map +3 -3
- package/dist/coding-agents/agents/claude-code.js +3 -1
- package/dist/coding-agents/agents/claude-code.js.map +2 -2
- package/dist/coding-agents/claude-code-client.js +2 -1
- package/dist/coding-agents/claude-code-client.js.map +2 -2
- package/dist/coding-agents/copilot-client.js +17 -12
- package/dist/coding-agents/copilot-client.js.map +2 -2
- package/dist/coding-agents/default-permissions.js +152 -0
- package/dist/coding-agents/default-permissions.js.map +7 -0
- package/dist/coding-agents/drbot-mcp.js +167 -0
- package/dist/coding-agents/drbot-mcp.js.map +7 -0
- package/dist/commands/add.js +12 -7
- package/dist/commands/add.js.map +2 -2
- package/dist/commands/analyzer.js +134 -23
- package/dist/commands/analyzer.js.map +2 -2
- package/dist/commands/audit.js +6 -6
- package/dist/commands/audit.js.map +2 -2
- package/dist/commands/changeset-verify.js +55 -0
- package/dist/commands/changeset-verify.js.map +7 -0
- package/dist/commands/changeset.js +261 -147
- package/dist/commands/changeset.js.map +2 -2
- package/dist/commands/delete.js +52 -19
- package/dist/commands/delete.js.map +3 -3
- package/dist/commands/element.js +3 -2
- package/dist/commands/element.js.map +2 -2
- package/dist/commands/farm.js +773 -0
- package/dist/commands/farm.js.map +7 -0
- package/dist/commands/init.js +11 -1
- package/dist/commands/init.js.map +2 -2
- package/dist/commands/mcp.js +122 -0
- package/dist/commands/mcp.js.map +7 -0
- package/dist/commands/relationship.js +251 -47
- package/dist/commands/relationship.js.map +2 -2
- package/dist/commands/reports.js +1 -1
- package/dist/commands/reports.js.map +2 -2
- package/dist/commands/update.js +56 -24
- package/dist/commands/update.js.map +2 -2
- package/dist/commands/upgrade.js +99 -11
- package/dist/commands/upgrade.js.map +3 -3
- package/dist/commands/validate.js +41 -3
- package/dist/commands/validate.js.map +2 -2
- package/dist/commands/version.js +2 -2
- package/dist/commands/version.js.map +2 -2
- package/dist/commands/visualize.js +4 -3
- package/dist/commands/visualize.js.map +2 -2
- package/dist/config.js +83 -0
- package/dist/config.js.map +7 -0
- package/dist/core/annotation-store.js +138 -0
- package/dist/core/annotation-store.js.map +7 -0
- package/dist/core/catalog-migration.js +33 -0
- package/dist/core/catalog-migration.js.map +7 -0
- package/dist/core/changeset-analysis.js +421 -0
- package/dist/core/changeset-analysis.js.map +7 -0
- package/dist/core/changeset-base-index.js +153 -0
- package/dist/core/changeset-base-index.js.map +7 -0
- package/dist/core/changeset-brief-delta.js +102 -0
- package/dist/core/changeset-brief-delta.js.map +7 -0
- package/dist/core/changeset-graph.js +281 -0
- package/dist/core/changeset-graph.js.map +7 -0
- package/dist/core/changeset-only-guard.js +32 -0
- package/dist/core/changeset-only-guard.js.map +7 -0
- package/dist/core/changeset-summary.js +68 -0
- package/dist/core/changeset-summary.js.map +7 -0
- package/dist/core/changeset-validator.js +66 -20
- package/dist/core/changeset-validator.js.map +2 -2
- package/dist/core/changeset-verify.js +518 -0
- package/dist/core/changeset-verify.js.map +7 -0
- package/dist/core/changeset.js +56 -9
- package/dist/core/changeset.js.map +2 -2
- package/dist/core/element-type-migration.js +145 -0
- package/dist/core/element-type-migration.js.map +7 -0
- package/dist/core/farm-manifest.js +140 -0
- package/dist/core/farm-manifest.js.map +7 -0
- package/dist/core/farm-sync-engine.js +346 -0
- package/dist/core/farm-sync-engine.js.map +7 -0
- package/dist/core/farm-sync-state.js +167 -0
- package/dist/core/farm-sync-state.js.map +7 -0
- package/dist/core/manifest.js +6 -3
- package/dist/core/manifest.js.map +2 -2
- package/dist/core/migration-registry.js +84 -1
- package/dist/core/migration-registry.js.map +2 -2
- package/dist/core/model-upgrade.js +102 -0
- package/dist/core/model-upgrade.js.map +7 -0
- package/dist/core/model.js +257 -44
- package/dist/core/model.js.map +3 -3
- package/dist/core/mutation-handler.js +71 -6
- package/dist/core/mutation-handler.js.map +2 -2
- package/dist/core/relationship-migration-table.js +6639 -0
- package/dist/core/relationship-migration-table.js.map +7 -0
- package/dist/core/relationship-migration.js +272 -0
- package/dist/core/relationship-migration.js.map +7 -0
- package/dist/core/relationship-prune.js +49 -0
- package/dist/core/relationship-prune.js.map +7 -0
- package/dist/core/relationship-staging.js +68 -0
- package/dist/core/relationship-staging.js.map +7 -0
- package/dist/core/relationships.js +26 -4
- package/dist/core/relationships.js.map +2 -2
- package/dist/core/report-data-model.js +7 -13
- package/dist/core/report-data-model.js.map +2 -2
- package/dist/core/staged-changeset-storage.js +64 -17
- package/dist/core/staged-changeset-storage.js.map +2 -2
- package/dist/core/staged-source-reference.js +28 -0
- package/dist/core/staged-source-reference.js.map +7 -0
- package/dist/core/staging-area.js +83 -18
- package/dist/core/staging-area.js.map +2 -2
- package/dist/core/virtual-projection.js +14 -5
- package/dist/core/virtual-projection.js.map +2 -2
- package/dist/export/archimate-exporter.js +1 -0
- package/dist/export/archimate-exporter.js.map +2 -2
- package/dist/generated/compiled-validators.js +2 -2
- package/dist/generated/compiled-validators.js.map +2 -2
- package/dist/generated/layer-registry.js +16 -16
- package/dist/generated/layer-registry.js.map +2 -2
- package/dist/generated/node-types.js +186 -168
- package/dist/generated/node-types.js.map +2 -2
- package/dist/generated/relationship-index.js +2209 -7727
- package/dist/generated/relationship-index.js.map +2 -2
- package/dist/integrations/claude_code/agents/dr-architect.md +16 -3
- package/dist/integrations/claude_code/agents/dr-extractor.md +1 -1
- package/dist/integrations/claude_code/commands/dr-analyzer.md +565 -0
- package/dist/integrations/claude_code/commands/dr-map.md +13 -0
- package/dist/integrations/claude_code/commands/dr-plan.md +40 -0
- package/dist/integrations/claude_code/commands/dr-relate.md +106 -96
- package/dist/integrations/claude_code/commands/dr-verify.md +45 -2
- package/dist/integrations/claude_code/docs/END_TO_END_WALKTHROUGH.md +14 -0
- package/dist/integrations/claude_code/docs/MCP_SERVER.md +79 -0
- package/dist/integrations/claude_code/docs/QUICK_START.md +37 -8
- package/dist/integrations/claude_code/docs/README.md +52 -1
- package/dist/integrations/claude_code/skills/dr_01_motivation_layer/SKILL.md +93 -72
- package/dist/integrations/claude_code/skills/dr_02_business_layer/SKILL.md +163 -126
- package/dist/integrations/claude_code/skills/dr_03_product_layer/SKILL.md +161 -126
- package/dist/integrations/claude_code/skills/dr_04_security_layer/SKILL.md +153 -133
- package/dist/integrations/claude_code/skills/dr_05_application_layer/SKILL.md +129 -100
- package/dist/integrations/claude_code/skills/dr_06_technology_layer/SKILL.md +111 -94
- package/dist/integrations/claude_code/skills/dr_07_api_layer/SKILL.md +143 -157
- package/dist/integrations/claude_code/skills/dr_08_data_model_layer/SKILL.md +117 -33
- package/dist/integrations/claude_code/skills/dr_09_dataset_layer/SKILL.md +74 -25
- package/dist/integrations/claude_code/skills/dr_10_ux_layer/SKILL.md +88 -12
- package/dist/integrations/claude_code/skills/dr_11_navigation_layer/SKILL.md +83 -24
- package/dist/integrations/claude_code/skills/dr_12_apm_layer/SKILL.md +57 -12
- package/dist/integrations/claude_code/skills/dr_13_testing_layer/SKILL.md +92 -15
- package/dist/integrations/claude_code/skills/dr_change_planning/SKILL.md +119 -0
- package/dist/integrations/claude_code/skills/dr_changeset_reviewer/SKILL.md +3 -0
- package/dist/integrations/claude_code/skills/dr_engineering_guide/SKILL.md +1 -1
- package/dist/integrations/github_copilot/agents/dr-architect.md +1 -1
- package/dist/integrations/github_copilot/skills/dr_01_motivation_layer/SKILL.md +182 -102
- package/dist/integrations/github_copilot/skills/dr_02_business_layer/SKILL.md +266 -148
- package/dist/integrations/github_copilot/skills/dr_03_product_layer/SKILL.md +547 -86
- package/dist/integrations/github_copilot/skills/dr_04_security_layer/SKILL.md +164 -169
- package/dist/integrations/github_copilot/skills/dr_05_application_layer/SKILL.md +420 -150
- package/dist/integrations/github_copilot/skills/dr_06_technology_layer/SKILL.md +331 -138
- package/dist/integrations/github_copilot/skills/dr_07_api_layer/SKILL.md +265 -201
- package/dist/integrations/github_copilot/skills/dr_08_data_model_layer/SKILL.md +181 -58
- package/dist/integrations/github_copilot/skills/dr_09_dataset_layer/SKILL.md +209 -57
- package/dist/integrations/github_copilot/skills/dr_10_ux_layer/SKILL.md +277 -112
- package/dist/integrations/github_copilot/skills/dr_11_navigation_layer/SKILL.md +219 -70
- package/dist/integrations/github_copilot/skills/dr_12_apm_layer/SKILL.md +189 -105
- package/dist/integrations/github_copilot/skills/dr_13_testing_layer/SKILL.md +222 -102
- package/dist/integrations/github_copilot/skills/dr_change_planning/SKILL.md +119 -0
- package/dist/integrations/github_copilot/skills/dr_changeset_reviewer/SKILL.md +3 -0
- package/dist/integrations/hash-utils.js.map +2 -2
- package/dist/mcp/api-key-manager.js +111 -0
- package/dist/mcp/api-key-manager.js.map +7 -0
- package/dist/mcp/changeset-only.js +34 -0
- package/dist/mcp/changeset-only.js.map +7 -0
- package/dist/mcp/http-transport.js +176 -0
- package/dist/mcp/http-transport.js.map +7 -0
- package/dist/mcp/resource-registry.js +97 -0
- package/dist/mcp/resource-registry.js.map +7 -0
- package/dist/mcp/tool-registry.js +60 -0
- package/dist/mcp/tool-registry.js.map +7 -0
- package/dist/mcp/tools/annotation-create.js +39 -0
- package/dist/mcp/tools/annotation-create.js.map +7 -0
- package/dist/mcp/tools/annotation-delete.js +29 -0
- package/dist/mcp/tools/annotation-delete.js.map +7 -0
- package/dist/mcp/tools/annotation-get.js +29 -0
- package/dist/mcp/tools/annotation-get.js.map +7 -0
- package/dist/mcp/tools/annotation-list.js +24 -0
- package/dist/mcp/tools/annotation-list.js.map +7 -0
- package/dist/mcp/tools/annotation-reply.js +34 -0
- package/dist/mcp/tools/annotation-reply.js.map +7 -0
- package/dist/mcp/tools/annotation-shared.js +10 -0
- package/dist/mcp/tools/annotation-shared.js.map +7 -0
- package/dist/mcp/tools/annotation-update.js +39 -0
- package/dist/mcp/tools/annotation-update.js.map +7 -0
- package/dist/mcp/tools/changeset-analysis-tools.js +78 -0
- package/dist/mcp/tools/changeset-analysis-tools.js.map +7 -0
- package/dist/mcp/tools/changeset-editing.js +184 -0
- package/dist/mcp/tools/changeset-editing.js.map +7 -0
- package/dist/mcp/tools/changeset-lifecycle.js +83 -0
- package/dist/mcp/tools/changeset-lifecycle.js.map +7 -0
- package/dist/mcp/tools/changeset-list.js +33 -0
- package/dist/mcp/tools/changeset-list.js.map +7 -0
- package/dist/mcp/tools/changeset-shared.js +31 -0
- package/dist/mcp/tools/changeset-shared.js.map +7 -0
- package/dist/mcp/tools/changeset-show.js +55 -0
- package/dist/mcp/tools/changeset-show.js.map +7 -0
- package/dist/mcp/tools/changeset-verify.js +43 -0
- package/dist/mcp/tools/changeset-verify.js.map +7 -0
- package/dist/mcp/tools/chat-launch.js +50 -0
- package/dist/mcp/tools/chat-launch.js.map +7 -0
- package/dist/mcp/tools/chat-status.js +26 -0
- package/dist/mcp/tools/chat-status.js.map +7 -0
- package/dist/mcp/tools/index.js +65 -0
- package/dist/mcp/tools/index.js.map +7 -0
- package/dist/mcp/tools/model-add.js +107 -0
- package/dist/mcp/tools/model-add.js.map +7 -0
- package/dist/mcp/tools/model-delete.js +99 -0
- package/dist/mcp/tools/model-delete.js.map +7 -0
- package/dist/mcp/tools/model-export.js +72 -0
- package/dist/mcp/tools/model-export.js.map +7 -0
- package/dist/mcp/tools/model-info.js +51 -0
- package/dist/mcp/tools/model-info.js.map +7 -0
- package/dist/mcp/tools/model-list.js +53 -0
- package/dist/mcp/tools/model-list.js.map +7 -0
- package/dist/mcp/tools/model-reload.js +34 -0
- package/dist/mcp/tools/model-reload.js.map +7 -0
- package/dist/mcp/tools/model-search.js +102 -0
- package/dist/mcp/tools/model-search.js.map +7 -0
- package/dist/mcp/tools/model-show.js +68 -0
- package/dist/mcp/tools/model-show.js.map +7 -0
- package/dist/mcp/tools/model-stats.js +22 -0
- package/dist/mcp/tools/model-stats.js.map +7 -0
- package/dist/mcp/tools/model-trace.js +118 -0
- package/dist/mcp/tools/model-trace.js.map +7 -0
- package/dist/mcp/tools/model-update.js +121 -0
- package/dist/mcp/tools/model-update.js.map +7 -0
- package/dist/mcp/tools/model-validate.js +78 -0
- package/dist/mcp/tools/model-validate.js.map +7 -0
- package/dist/mcp/tools/relationship-tools.js +98 -0
- package/dist/mcp/tools/relationship-tools.js.map +7 -0
- package/dist/mcp/tools/shared.js +126 -0
- package/dist/mcp/tools/shared.js.map +7 -0
- package/dist/mcp/tools/spec-type.js +90 -0
- package/dist/mcp/tools/spec-type.js.map +7 -0
- package/dist/reports/model-layer-report-generator.js +5 -3
- package/dist/reports/model-layer-report-generator.js.map +2 -2
- package/dist/reports/model-readme-generator.js +116 -0
- package/dist/reports/model-readme-generator.js.map +7 -0
- package/dist/reports/model-report-data.js +37 -1
- package/dist/reports/model-report-data.js.map +2 -2
- package/dist/reports/model-report-orchestrator.js +29 -6
- package/dist/reports/model-report-orchestrator.js.map +2 -2
- package/dist/reports/model-report-utils.js +9 -0
- package/dist/reports/model-report-utils.js.map +7 -0
- package/dist/schemas/bundled/analyzers/cbm.json +1186 -68
- package/dist/schemas/bundled/analyzers/manifest.json +2 -2
- package/dist/schemas/bundled/api.json +1029 -1658
- package/dist/schemas/bundled/apm.json +499 -734
- package/dist/schemas/bundled/application.json +745 -370
- package/dist/schemas/bundled/base.json +3 -220
- package/dist/schemas/bundled/business.json +452 -366
- package/dist/schemas/bundled/data-model.json +403 -383
- package/dist/schemas/bundled/data-store.json +334 -558
- package/dist/schemas/bundled/manifest.json +18 -18
- package/dist/schemas/bundled/motivation.json +349 -368
- package/dist/schemas/bundled/navigation.json +415 -731
- package/dist/schemas/bundled/product.json +325 -159
- package/dist/schemas/bundled/security.json +864 -1232
- package/dist/schemas/bundled/technology.json +574 -703
- package/dist/schemas/bundled/testing.json +718 -1643
- package/dist/schemas/bundled/ux.json +739 -1352
- package/dist/server/schemas.js +8 -0
- package/dist/server/schemas.js.map +2 -2
- package/dist/server/server.js +234 -31
- package/dist/server/server.js.map +2 -2
- package/dist/server-entry.js +2 -1
- package/dist/server-entry.js.map +2 -2
- package/dist/telemetry/config.js +2 -40
- package/dist/telemetry/config.js.map +2 -2
- package/dist/telemetry/index.js +1 -1
- package/dist/types/index.js.map +2 -2
- package/dist/utils/ansi-suppressor.js +23 -0
- package/dist/utils/ansi-suppressor.js.map +7 -0
- package/dist/utils/attribute-patch.js +41 -0
- package/dist/utils/attribute-patch.js.map +7 -0
- package/dist/utils/color-utils.js +34 -0
- package/dist/utils/color-utils.js.map +7 -0
- package/dist/utils/element-reference-shape.js +15 -1
- package/dist/utils/element-reference-shape.js.map +3 -3
- package/dist/utils/error-hints.js +29 -0
- package/dist/utils/error-hints.js.map +7 -0
- package/dist/utils/errors.js +75 -10
- package/dist/utils/errors.js.map +2 -2
- package/dist/utils/globals.js +17 -1
- package/dist/utils/globals.js.map +2 -2
- package/dist/utils/project-paths.js +50 -3
- package/dist/utils/project-paths.js.map +2 -2
- package/dist/utils/reference-path-parser.js +49 -0
- package/dist/utils/reference-path-parser.js.map +7 -0
- package/dist/utils/source-reference.js +17 -10
- package/dist/utils/source-reference.js.map +2 -2
- package/dist/utils/spec-version.js +10 -2
- package/dist/utils/spec-version.js.map +2 -2
- package/dist/validators/composed-reference-validator.js +240 -0
- package/dist/validators/composed-reference-validator.js.map +7 -0
- package/dist/validators/reference-validator.js +57 -13
- package/dist/validators/reference-validator.js.map +3 -3
- package/dist/validators/relationship-schema-validator.js +33 -5
- package/dist/validators/relationship-schema-validator.js.map +3 -3
- package/dist/validators/schema-validator.js +27 -9
- package/dist/validators/schema-validator.js.map +2 -2
- package/dist/validators/types.js.map +1 -1
- package/dist/viewer/README.md +6 -6
- package/dist/viewer/assets/main-CxzcuU_o.js +84 -0
- package/dist/viewer/assets/main-j-7ULYpm.css +1 -0
- package/dist/viewer/index.html +2 -2
- package/dist/viewer/manifest.json +10 -10
- package/dist/viewer/version.json +1 -1
- package/package.json +7 -3
- package/dist/viewer/assets/main-B7AOQXXX.js +0 -81
- 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.
|
|
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.
|
|
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
|
|
71
|
-
| ----------------------- |
|
|
72
|
-
|
|
|
73
|
-
| Node | composes
|
|
74
|
-
|
|
|
75
|
-
| Node |
|
|
76
|
-
|
|
|
77
|
-
|
|
|
78
|
-
|
|
|
79
|
-
|
|
|
80
|
-
|
|
|
81
|
-
|
|
|
82
|
-
|
|
|
83
|
-
|
|
|
84
|
-
|
|
|
85
|
-
|
|
|
86
|
-
|
|
|
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
|
|
94
|
-
| TechnologyProcess | triggers | TechnologyEvent | "
|
|
95
|
-
| TechnologyProcess |
|
|
96
|
-
|
|
|
97
|
-
|
|
|
98
|
-
|
|
|
99
|
-
| TechnologyProcess | accesses | Artifact | "
|
|
100
|
-
|
|
|
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
|
-
|
|
|
109
|
-
|
|
|
110
|
-
|
|
|
111
|
-
|
|
|
112
|
-
|
|
|
113
|
-
|
|
|
114
|
-
|
|
|
115
|
-
|
|
|
116
|
-
|
|
|
117
|
-
|
|
|
118
|
-
|
|
|
119
|
-
|
|
|
120
|
-
|
|
|
121
|
-
|
|
|
122
|
-
|
|
|
123
|
-
|
|
|
124
|
-
|
|
|
125
|
-
|
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
-
|
|
137
|
-
-
|
|
138
|
-
-
|
|
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
|
|
409
|
-
|
|
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
|
|
456
|
-
|
|
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
|
|
498
|
-
|
|
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
|
|
506
|
-
|
|
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
|
|
510
|
-
|
|
705
|
+
dr relationship add technology.technologyservice.kubernetes-orchestration \
|
|
706
|
+
motivation.goal.improve-deployment-frequency --predicate realizes
|
|
511
707
|
|
|
512
|
-
dr relationship add
|
|
513
|
-
|
|
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
|
|
517
|
-
|
|
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 --
|
|
524
|
-
dr validate --
|
|
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
|
-
├──
|
|
536
|
-
│
|
|
537
|
-
|
|
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
|
-
├──
|
|
541
|
-
└──
|
|
542
|
-
├──
|
|
543
|
-
└──
|
|
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
|
-
├──
|
|
551
|
-
├──
|
|
552
|
-
|
|
553
|
-
|
|
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
|
-
├──
|
|
565
|
-
├──
|
|
566
|
-
├──
|
|
567
|
-
└──
|
|
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>
|
|
635
|
-
dr add technology system-software <name>
|
|
636
|
-
dr add technology service <name>
|
|
637
|
-
dr add technology network <name>
|
|
638
|
-
dr add technology artifact <name>
|
|
639
|
-
dr add technology function <name>
|
|
640
|
-
dr add technology process <name>
|
|
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 <
|
|
647
|
-
dr relationship add <
|
|
648
|
-
dr relationship add <node>
|
|
649
|
-
dr relationship add <node>
|
|
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
|
|
657
|
-
dr relationship add technology
|
|
658
|
-
dr relationship add
|
|
659
|
-
dr relationship add technology
|
|
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
|
```
|