@documentation-robotics/cli 0.1.0 → 0.1.5
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/LICENSE +21 -0
- package/README.md +466 -693
- package/dist/analysis/data-model-analyzer.js +189 -0
- package/dist/analysis/data-model-analyzer.js.map +7 -0
- package/dist/analysis/index.js +3 -0
- package/dist/analysis/index.js.map +7 -0
- package/dist/analysis/relationship-classifier.js +181 -0
- package/dist/analysis/relationship-classifier.js.map +7 -0
- package/dist/analyzers/base-analyzer.js +1 -0
- package/dist/analyzers/base-analyzer.js.map +7 -0
- package/dist/analyzers/call-graph-utils.js +39 -0
- package/dist/analyzers/call-graph-utils.js.map +7 -0
- package/dist/analyzers/cbm-analyzer.js +1205 -0
- package/dist/analyzers/cbm-analyzer.js.map +7 -0
- package/dist/analyzers/heuristic-utils.js +55 -0
- package/dist/analyzers/heuristic-utils.js.map +7 -0
- package/dist/analyzers/mapping-loader.js +146 -0
- package/dist/analyzers/mapping-loader.js.map +7 -0
- package/dist/analyzers/registry.js +124 -0
- package/dist/analyzers/registry.js.map +7 -0
- package/dist/analyzers/session-state.js +176 -0
- package/dist/analyzers/session-state.js.map +7 -0
- package/dist/analyzers/stdio-client.js +206 -0
- package/dist/analyzers/stdio-client.js.map +7 -0
- package/dist/analyzers/types.js +15 -0
- package/dist/analyzers/types.js.map +7 -0
- package/dist/analyzers/verify-engine.js +209 -0
- package/dist/analyzers/verify-engine.js.map +7 -0
- package/dist/analyzers/verify-ignore.js +130 -0
- package/dist/analyzers/verify-ignore.js.map +7 -0
- package/dist/analyzers/version.js +8 -0
- package/dist/analyzers/version.js.map +7 -0
- package/dist/audit/ai/runner.js +41 -0
- package/dist/audit/ai/runner.js.map +7 -0
- package/dist/audit/differential-analyzer.js +183 -0
- package/dist/audit/differential-analyzer.js.map +7 -0
- package/dist/audit/index.js +32 -0
- package/dist/audit/index.js.map +7 -0
- package/dist/audit/nodes/ai/evaluator.js +49 -0
- package/dist/audit/nodes/ai/evaluator.js.map +7 -0
- package/dist/audit/nodes/ai/parser.js +55 -0
- package/dist/audit/nodes/ai/parser.js.map +7 -0
- package/dist/audit/nodes/ai/prompts.js +103 -0
- package/dist/audit/nodes/ai/prompts.js.map +7 -0
- package/dist/audit/nodes/analysis/node-completeness-checker.js +32 -0
- package/dist/audit/nodes/analysis/node-completeness-checker.js.map +7 -0
- package/dist/audit/nodes/analysis/node-definition-analyzer.js +47 -0
- package/dist/audit/nodes/analysis/node-definition-analyzer.js.map +7 -0
- package/dist/audit/nodes/analysis/node-overlap-detector.js +79 -0
- package/dist/audit/nodes/analysis/node-overlap-detector.js.map +7 -0
- package/dist/audit/nodes/model/orchestrator.js +82 -0
- package/dist/audit/nodes/model/orchestrator.js.map +7 -0
- package/dist/audit/nodes/spec/loader.js +116 -0
- package/dist/audit/nodes/spec/loader.js.map +7 -0
- package/dist/audit/nodes/spec/orchestrator.js +68 -0
- package/dist/audit/nodes/spec/orchestrator.js.map +7 -0
- package/dist/audit/nodes/types.js +1 -0
- package/dist/audit/nodes/types.js.map +7 -0
- package/dist/audit/pipeline/index.js +5 -0
- package/dist/audit/pipeline/index.js.map +7 -0
- package/dist/audit/pipeline/pipeline-orchestrator.js +218 -0
- package/dist/audit/pipeline/pipeline-orchestrator.js.map +7 -0
- package/dist/audit/relationships/ai/evaluator.js +235 -0
- package/dist/audit/relationships/ai/evaluator.js.map +7 -0
- package/dist/audit/relationships/ai/parser.js +197 -0
- package/dist/audit/relationships/ai/parser.js.map +7 -0
- package/dist/audit/relationships/ai/prompts.js +274 -0
- package/dist/audit/relationships/ai/prompts.js.map +7 -0
- package/dist/audit/relationships/analysis/balance-assessor.js +115 -0
- package/dist/audit/relationships/analysis/balance-assessor.js.map +7 -0
- package/dist/audit/relationships/analysis/coverage-analyzer.js +99 -0
- package/dist/audit/relationships/analysis/coverage-analyzer.js.map +7 -0
- package/dist/audit/relationships/analysis/duplicate-detector.js +95 -0
- package/dist/audit/relationships/analysis/duplicate-detector.js.map +7 -0
- package/dist/audit/relationships/analysis/gap-analyzer.js +99 -0
- package/dist/audit/relationships/analysis/gap-analyzer.js.map +7 -0
- package/dist/audit/relationships/analysis/layer-templates.js +294 -0
- package/dist/audit/relationships/analysis/layer-templates.js.map +7 -0
- package/dist/audit/relationships/graph/connectivity.js +129 -0
- package/dist/audit/relationships/graph/connectivity.js.map +7 -0
- package/dist/audit/relationships/graph/relationship-graph.js +179 -0
- package/dist/audit/relationships/graph/relationship-graph.js.map +7 -0
- package/dist/audit/relationships/model/balance-assessor.js +49 -0
- package/dist/audit/relationships/model/balance-assessor.js.map +7 -0
- package/dist/audit/relationships/model/coverage-analyzer.js +34 -0
- package/dist/audit/relationships/model/coverage-analyzer.js.map +7 -0
- package/dist/audit/relationships/model/duplicate-detector.js +68 -0
- package/dist/audit/relationships/model/duplicate-detector.js.map +7 -0
- package/dist/audit/relationships/model/gap-analyzer.js +41 -0
- package/dist/audit/relationships/model/gap-analyzer.js.map +7 -0
- package/dist/audit/relationships/model/orchestrator.js +126 -0
- package/dist/audit/relationships/model/orchestrator.js.map +7 -0
- package/dist/audit/relationships/spec/orchestrator.js +157 -0
- package/dist/audit/relationships/spec/orchestrator.js.map +7 -0
- package/dist/audit/reports/index.js +5 -0
- package/dist/audit/reports/index.js.map +7 -0
- package/dist/audit/reports/report-generator.js +118 -0
- package/dist/audit/reports/report-generator.js.map +7 -0
- package/dist/audit/snapshot-storage.js +163 -0
- package/dist/audit/snapshot-storage.js.map +7 -0
- package/dist/audit/types.js +21 -0
- package/dist/audit/types.js.map +7 -0
- package/dist/cli.js +223 -92
- package/dist/cli.js.map +3 -3
- package/dist/coding-agents/agents/claude-code.js +147 -0
- package/dist/coding-agents/agents/claude-code.js.map +7 -0
- package/dist/coding-agents/agents/index.js +5 -0
- package/dist/coding-agents/agents/index.js.map +7 -0
- package/dist/coding-agents/agents/types.js +1 -0
- package/dist/coding-agents/agents/types.js.map +7 -0
- package/dist/coding-agents/base-chat-client.js +45 -0
- package/dist/coding-agents/base-chat-client.js.map +7 -0
- package/dist/coding-agents/chat-utils.js +23 -0
- package/dist/coding-agents/chat-utils.js.map +7 -0
- package/dist/coding-agents/claude-code-client.js +246 -0
- package/dist/coding-agents/claude-code-client.js.map +7 -0
- package/dist/coding-agents/copilot-client.js +209 -0
- package/dist/coding-agents/copilot-client.js.map +7 -0
- package/dist/commands/add.js +95 -33
- package/dist/commands/add.js.map +2 -2
- package/dist/commands/analyzer.js +511 -0
- package/dist/commands/analyzer.js.map +7 -0
- package/dist/commands/audit-diff.js +49 -0
- package/dist/commands/audit-diff.js.map +7 -0
- package/dist/commands/audit-snapshots.js +62 -0
- package/dist/commands/audit-snapshots.js.map +7 -0
- package/dist/commands/audit.js +81 -0
- package/dist/commands/audit.js.map +7 -0
- package/dist/commands/catalog.js +248 -0
- package/dist/commands/catalog.js.map +7 -0
- package/dist/commands/changeset.js +577 -66
- package/dist/commands/changeset.js.map +2 -2
- package/dist/commands/chat.js +106 -83
- package/dist/commands/chat.js.map +2 -2
- package/dist/commands/claude.js +74 -0
- package/dist/commands/claude.js.map +7 -0
- package/dist/commands/conformance.js +71 -68
- package/dist/commands/conformance.js.map +2 -2
- package/dist/commands/copilot.js +75 -0
- package/dist/commands/copilot.js.map +7 -0
- package/dist/commands/delete.js +125 -11
- package/dist/commands/delete.js.map +3 -3
- package/dist/commands/discover-logic.js +44 -0
- package/dist/commands/discover-logic.js.map +7 -0
- package/dist/commands/docs.js +87 -0
- package/dist/commands/docs.js.map +7 -0
- package/dist/commands/element.js +14 -20
- package/dist/commands/element.js.map +2 -2
- package/dist/commands/export.js +13 -3
- package/dist/commands/export.js.map +2 -2
- package/dist/commands/import.js +51 -0
- package/dist/commands/import.js.map +7 -0
- package/dist/commands/info.js +30 -24
- package/dist/commands/info.js.map +2 -2
- package/dist/commands/init.js +27 -11
- package/dist/commands/init.js.map +2 -2
- package/dist/commands/list.js +63 -13
- package/dist/commands/list.js.map +3 -3
- package/dist/commands/relationship.js +225 -37
- package/dist/commands/relationship.js.map +2 -2
- package/dist/commands/report.js +54 -0
- package/dist/commands/report.js.map +7 -0
- package/dist/commands/reports.js +45 -0
- package/dist/commands/reports.js.map +7 -0
- package/dist/commands/schema.js +135 -0
- package/dist/commands/schema.js.map +7 -0
- package/dist/commands/search.js +40 -12
- package/dist/commands/search.js.map +2 -2
- package/dist/commands/show.js +58 -27
- package/dist/commands/show.js.map +2 -2
- package/dist/commands/stats.js +35 -0
- package/dist/commands/stats.js.map +7 -0
- package/dist/commands/trace.js +39 -16
- package/dist/commands/trace.js.map +2 -2
- package/dist/commands/update.js +141 -14
- package/dist/commands/update.js.map +2 -2
- package/dist/commands/upgrade.js +210 -46
- package/dist/commands/upgrade.js.map +3 -3
- package/dist/commands/validate.js +142 -23
- package/dist/commands/validate.js.map +3 -3
- package/dist/commands/version.js +8 -12
- package/dist/commands/version.js.map +2 -2
- package/dist/commands/visualize.js +155 -25
- package/dist/commands/visualize.js.map +2 -2
- package/dist/core/base-snapshot-manager.js +84 -0
- package/dist/core/base-snapshot-manager.js.map +7 -0
- package/dist/core/changeset-exporter.js +305 -0
- package/dist/core/changeset-exporter.js.map +7 -0
- package/dist/core/changeset-validator.js +41 -0
- package/dist/core/changeset-validator.js.map +7 -0
- package/dist/core/changeset.js +88 -173
- package/dist/core/changeset.js.map +2 -2
- package/dist/core/dependency-tracker.js +4 -2
- package/dist/core/dependency-tracker.js.map +2 -2
- package/dist/core/element.js +98 -27
- package/dist/core/element.js.map +2 -2
- package/dist/core/golden-copy-cache.js +290 -0
- package/dist/core/golden-copy-cache.js.map +7 -0
- package/dist/core/graph-model.js +266 -0
- package/dist/core/graph-model.js.map +7 -0
- package/dist/core/layer.js +159 -16
- package/dist/core/layer.js.map +2 -2
- package/dist/core/layers.js +32 -0
- package/dist/core/layers.js.map +7 -0
- package/dist/core/manifest.js +32 -11
- package/dist/core/manifest.js.map +2 -2
- package/dist/core/migration-registry.js +56 -1
- package/dist/core/migration-registry.js.map +2 -2
- package/dist/core/model.js +424 -217
- package/dist/core/model.js.map +3 -3
- package/dist/core/mutation-handler.js +179 -0
- package/dist/core/mutation-handler.js.map +7 -0
- package/dist/core/reference-registry.js +29 -21
- package/dist/core/reference-registry.js.map +2 -2
- package/dist/core/relationship-catalog.js +189 -0
- package/dist/core/relationship-catalog.js.map +7 -0
- package/dist/core/relationship-registry.js.map +2 -2
- package/dist/core/relationships.js.map +1 -1
- package/dist/core/report-data-model.js +285 -0
- package/dist/core/report-data-model.js.map +7 -0
- package/dist/core/spec-data-service.js +185 -0
- package/dist/core/spec-data-service.js.map +7 -0
- package/dist/core/spec-loader-types.js +1 -0
- package/dist/core/spec-loader-types.js.map +7 -0
- package/dist/core/spec-loader.js +234 -0
- package/dist/core/spec-loader.js.map +7 -0
- package/dist/core/staged-changeset-storage.js +282 -0
- package/dist/core/staged-changeset-storage.js.map +7 -0
- package/dist/core/staging-area.js +1002 -0
- package/dist/core/staging-area.js.map +7 -0
- package/dist/core/stats-collector.js +169 -0
- package/dist/core/stats-collector.js.map +7 -0
- package/dist/core/virtual-projection.js +443 -0
- package/dist/core/virtual-projection.js.map +7 -0
- package/dist/export/archimate-exporter.js +99 -60
- package/dist/export/archimate-exporter.js.map +2 -2
- package/dist/export/audit-formatters.js +479 -0
- package/dist/export/audit-formatters.js.map +7 -0
- package/dist/export/diff-formatters.js +99 -0
- package/dist/export/diff-formatters.js.map +7 -0
- package/dist/export/export-manager.js.map +2 -2
- package/dist/export/graphml-exporter.js +44 -27
- package/dist/export/graphml-exporter.js.map +2 -2
- package/dist/export/index.js +4 -0
- package/dist/export/index.js.map +2 -2
- package/dist/export/json-schema-exporter.js +55 -42
- package/dist/export/json-schema-exporter.js.map +2 -2
- package/dist/export/markdown-exporter.js +92 -70
- package/dist/export/markdown-exporter.js.map +2 -2
- package/dist/export/markdown-generator.js +248 -0
- package/dist/export/markdown-generator.js.map +7 -0
- package/dist/export/markdown-utils.js +30 -0
- package/dist/export/markdown-utils.js.map +7 -0
- package/dist/export/mermaid-markdown-exporter.js +37 -0
- package/dist/export/mermaid-markdown-exporter.js.map +7 -0
- package/dist/export/openapi-exporter.js +119 -71
- package/dist/export/openapi-exporter.js.map +2 -2
- package/dist/export/plantuml-exporter.js +104 -39
- package/dist/export/plantuml-exporter.js.map +2 -2
- package/dist/export/report-formatters.js +111 -0
- package/dist/export/report-formatters.js.map +7 -0
- package/dist/export/stats-formatters.js +98 -0
- package/dist/export/stats-formatters.js.map +7 -0
- package/dist/export/types.js +2 -14
- package/dist/export/types.js.map +2 -2
- package/dist/export/verify-formatters.js +153 -0
- package/dist/export/verify-formatters.js.map +7 -0
- package/dist/generated/compiled-validators.js +17 -0
- package/dist/generated/compiled-validators.js.map +7 -0
- package/dist/generated/index.js +31 -0
- package/dist/generated/index.js.map +7 -0
- package/dist/generated/layer-registry.js +190 -0
- package/dist/generated/layer-registry.js.map +7 -0
- package/dist/generated/layer-types.js +7 -0
- package/dist/generated/layer-types.js.map +7 -0
- package/dist/generated/node-types.js +1719 -0
- package/dist/generated/node-types.js.map +7 -0
- package/dist/generated/relationship-index.js +14552 -0
- package/dist/generated/relationship-index.js.map +7 -0
- package/dist/import/archimate-importer.js +166 -0
- package/dist/import/archimate-importer.js.map +7 -0
- package/dist/import/index.js +47 -0
- package/dist/import/index.js.map +7 -0
- package/dist/import/openapi-importer.js +143 -0
- package/dist/import/openapi-importer.js.map +7 -0
- package/dist/import/types.js +1 -0
- package/dist/import/types.js.map +7 -0
- package/dist/integrations/base-manager.js +311 -0
- package/dist/integrations/base-manager.js.map +7 -0
- package/dist/integrations/claude-manager.js +360 -0
- package/dist/integrations/claude-manager.js.map +7 -0
- package/dist/integrations/claude_code/agents/dr-advisor.md +253 -0
- package/dist/integrations/claude_code/agents/dr-architect.md +278 -0
- package/dist/integrations/claude_code/agents/dr-extractor.md +286 -0
- package/dist/integrations/claude_code/commands/dr-changeset.md +657 -0
- package/dist/integrations/claude_code/commands/dr-design.md +373 -0
- package/dist/integrations/claude_code/commands/dr-info.md +132 -0
- package/dist/integrations/claude_code/commands/dr-init.md +251 -0
- package/dist/integrations/claude_code/commands/dr-map.md +936 -0
- package/dist/integrations/claude_code/commands/dr-model.md +493 -0
- package/dist/integrations/claude_code/commands/dr-relate.md +814 -0
- package/dist/integrations/claude_code/commands/dr-sync.md +279 -0
- package/dist/integrations/claude_code/commands/dr-validate.md +654 -0
- package/dist/integrations/claude_code/commands/dr-verify.md +559 -0
- package/dist/integrations/claude_code/docs/END_TO_END_WALKTHROUGH.md +903 -0
- package/dist/integrations/claude_code/docs/QUICK_START.md +271 -0
- package/dist/integrations/claude_code/docs/README.md +347 -0
- package/dist/integrations/claude_code/skills/dr_01_motivation_layer/SKILL.md +550 -0
- package/dist/integrations/claude_code/skills/dr_02_business_layer/SKILL.md +620 -0
- package/dist/integrations/claude_code/skills/dr_03_security_layer/SKILL.md +642 -0
- package/dist/integrations/claude_code/skills/dr_04_application_layer/SKILL.md +911 -0
- package/dist/integrations/claude_code/skills/dr_05_technology_layer/SKILL.md +836 -0
- package/dist/integrations/claude_code/skills/dr_06_api_layer/SKILL.md +933 -0
- package/dist/integrations/claude_code/skills/dr_07_data_model_layer/SKILL.md +210 -0
- package/dist/integrations/claude_code/skills/dr_08_dataset_layer/SKILL.md +319 -0
- package/dist/integrations/claude_code/skills/dr_09_ux_layer/SKILL.md +319 -0
- package/dist/integrations/claude_code/skills/dr_10_navigation_layer/SKILL.md +318 -0
- package/dist/integrations/claude_code/skills/dr_11_apm_layer/SKILL.md +273 -0
- package/dist/integrations/claude_code/skills/dr_12_testing_layer/SKILL.md +273 -0
- package/dist/integrations/claude_code/skills/dr_changeset_reviewer/SKILL.md +187 -0
- package/dist/integrations/claude_code/skills/dr_codebase_memory/SKILL.md +590 -0
- package/dist/integrations/claude_code/skills/dr_engineering_guide/SKILL.md +295 -0
- package/dist/integrations/copilot-manager.js +328 -0
- package/dist/integrations/copilot-manager.js.map +7 -0
- package/dist/integrations/github_copilot/agents/dr-advisor.md +243 -0
- package/dist/integrations/github_copilot/agents/dr-architect.md +1567 -0
- package/dist/integrations/github_copilot/skills/dr_01_motivation_layer/SKILL.md +491 -0
- package/dist/integrations/github_copilot/skills/dr_02_business_layer/SKILL.md +539 -0
- package/dist/integrations/github_copilot/skills/dr_03_security_layer/SKILL.md +667 -0
- package/dist/integrations/github_copilot/skills/dr_04_application_layer/SKILL.md +670 -0
- package/dist/integrations/github_copilot/skills/dr_05_technology_layer/SKILL.md +660 -0
- package/dist/integrations/github_copilot/skills/dr_06_api_layer/SKILL.md +855 -0
- package/dist/integrations/github_copilot/skills/dr_07_data_model_layer/SKILL.md +171 -0
- package/dist/integrations/github_copilot/skills/dr_08_dataset_layer/SKILL.md +216 -0
- package/dist/integrations/github_copilot/skills/dr_09_ux_layer/SKILL.md +230 -0
- package/dist/integrations/github_copilot/skills/dr_10_navigation_layer/SKILL.md +228 -0
- package/dist/integrations/github_copilot/skills/dr_11_apm_layer/SKILL.md +234 -0
- package/dist/integrations/github_copilot/skills/dr_12_testing_layer/SKILL.md +230 -0
- package/dist/integrations/github_copilot/skills/dr_changeset_reviewer/SKILL.md +187 -0
- package/dist/integrations/hash-utils.js +51 -0
- package/dist/integrations/hash-utils.js.map +7 -0
- package/dist/integrations/types.js +16 -0
- package/dist/integrations/types.js.map +7 -0
- package/dist/reports/model-layer-report-generator.js +278 -0
- package/dist/reports/model-layer-report-generator.js.map +7 -0
- package/dist/reports/model-report-data.js +57 -0
- package/dist/reports/model-report-data.js.map +7 -0
- package/dist/reports/model-report-orchestrator.js +103 -0
- package/dist/reports/model-report-orchestrator.js.map +7 -0
- package/dist/schemas/bundled/analyzers/cbm.json +595 -0
- package/dist/schemas/bundled/analyzers/manifest.json +9 -0
- package/dist/schemas/bundled/api.json +3411 -0
- package/dist/schemas/bundled/apm.json +2371 -0
- package/dist/schemas/bundled/application.json +1253 -0
- package/dist/schemas/bundled/base.json +1622 -0
- package/dist/schemas/bundled/business.json +1279 -0
- package/dist/schemas/bundled/data-model.json +1298 -0
- package/dist/schemas/bundled/data-store.json +2025 -0
- package/dist/schemas/bundled/manifest.json +93 -0
- package/dist/schemas/bundled/motivation.json +1360 -0
- package/dist/schemas/bundled/navigation.json +1874 -0
- package/dist/schemas/bundled/security.json +3488 -0
- package/dist/schemas/bundled/technology.json +2067 -0
- package/dist/schemas/bundled/testing.json +3120 -0
- package/dist/schemas/bundled/ux.json +3592 -0
- package/dist/server/schemas.js +202 -0
- package/dist/server/schemas.js.map +7 -0
- package/dist/server/server.js +1336 -252
- package/dist/server/server.js.map +3 -3
- package/dist/server/telemetry-middleware.js +22 -15
- package/dist/server/telemetry-middleware.js.map +2 -2
- package/dist/server-entry.js +65 -0
- package/dist/server-entry.js.map +7 -0
- package/dist/telemetry/config.js +89 -0
- package/dist/telemetry/config.js.map +7 -0
- package/dist/telemetry/console-interceptor.js.map +1 -1
- package/dist/telemetry/detect.js +24 -0
- package/dist/telemetry/detect.js.map +7 -0
- package/dist/telemetry/fetch-otlp-exporter.js +112 -0
- package/dist/telemetry/fetch-otlp-exporter.js.map +7 -0
- package/dist/telemetry/index.js +153 -3
- package/dist/telemetry/index.js.map +2 -2
- package/dist/telemetry/resilient-exporter.js +22 -8
- package/dist/telemetry/resilient-exporter.js.map +2 -2
- package/dist/telemetry/resilient-log-exporter.js +17 -8
- package/dist/telemetry/resilient-log-exporter.js.map +2 -2
- package/dist/telemetry/test-instrumentation.js.map +2 -2
- package/dist/types/index.js +84 -0
- package/dist/types/index.js.map +3 -3
- package/dist/types/source-reference.js +1 -0
- package/dist/types/source-reference.js.map +7 -0
- package/dist/utils/chat-logger.js +292 -0
- package/dist/utils/chat-logger.js.map +7 -0
- package/dist/utils/claude-stream.js +8 -0
- package/dist/utils/claude-stream.js.map +7 -0
- package/dist/utils/date-utils.js +7 -0
- package/dist/utils/date-utils.js.map +7 -0
- package/dist/utils/element-utils.js.map +1 -1
- package/dist/utils/errors.js +88 -15
- package/dist/utils/errors.js.map +3 -3
- package/dist/utils/export-python-annotations.js +82 -0
- package/dist/utils/export-python-annotations.js.map +7 -0
- package/dist/utils/file-io.js +7 -2
- package/dist/utils/file-io.js.map +2 -2
- package/dist/utils/file-lock.js +156 -0
- package/dist/utils/file-lock.js.map +7 -0
- package/dist/utils/id-generator.js +18 -0
- package/dist/utils/id-generator.js.map +7 -0
- package/dist/utils/layer-name-formatter.js +16 -0
- package/dist/utils/layer-name-formatter.js.map +7 -0
- package/dist/utils/markdown-anchor.js +7 -0
- package/dist/utils/markdown-anchor.js.map +7 -0
- package/dist/utils/markdown-link.js +12 -0
- package/dist/utils/markdown-link.js.map +7 -0
- package/dist/utils/markdown-table.js +17 -0
- package/dist/utils/markdown-table.js.map +7 -0
- package/dist/utils/mermaid-utils.js +11 -0
- package/dist/utils/mermaid-utils.js.map +7 -0
- package/dist/utils/project-paths.js.map +2 -2
- package/dist/utils/source-reference.js +52 -0
- package/dist/utils/source-reference.js.map +7 -0
- package/dist/utils/spec-installer.js +40 -53
- package/dist/utils/spec-installer.js.map +2 -2
- package/dist/utils/spec-version.js +5 -1
- package/dist/utils/spec-version.js.map +2 -2
- package/dist/utils/string-utils.js +12 -0
- package/dist/utils/string-utils.js.map +7 -0
- package/dist/utils/table-formatting.js +19 -0
- package/dist/utils/table-formatting.js.map +7 -0
- package/dist/validators/index.js +4 -0
- package/dist/validators/index.js.map +2 -2
- package/dist/validators/naming-validator.js +20 -23
- package/dist/validators/naming-validator.js.map +2 -2
- package/dist/validators/reference-validator.js +23 -38
- package/dist/validators/reference-validator.js.map +2 -2
- package/dist/validators/relationship-schema-validator.js +243 -0
- package/dist/validators/relationship-schema-validator.js.map +7 -0
- package/dist/validators/schema-validator.js +168 -68
- package/dist/validators/schema-validator.js.map +2 -2
- package/dist/validators/semantic-validator.js +36 -60
- package/dist/validators/semantic-validator.js.map +2 -2
- package/dist/validators/types.js.map +2 -2
- package/dist/validators/validation-formatter.js +159 -0
- package/dist/validators/validation-formatter.js.map +7 -0
- package/dist/validators/validator.js +24 -38
- package/dist/validators/validator.js.map +2 -2
- package/dist/viewer/README.md +139 -0
- package/dist/viewer/assets/main-CY0Xufuj.css +1 -0
- package/dist/viewer/assets/main-DtgErnwF.js +81 -0
- package/dist/viewer/assets/vendor-CxKvDp2x.js +17 -0
- package/dist/viewer/favicon.svg +11 -0
- package/dist/viewer/fonts/inter/Inter-Black.woff2 +0 -0
- package/dist/viewer/fonts/inter/Inter-Bold.woff2 +0 -0
- package/dist/viewer/fonts/inter/Inter-ExtraBold.woff2 +0 -0
- package/dist/viewer/fonts/inter/Inter-Light.woff2 +0 -0
- package/dist/viewer/fonts/inter/Inter-Medium.woff2 +0 -0
- package/dist/viewer/fonts/inter/Inter-Regular.woff2 +0 -0
- package/dist/viewer/fonts/inter/Inter-SemiBold.woff2 +0 -0
- package/dist/viewer/fonts/jetbrains-mono/JetBrainsMono-Medium.woff2 +0 -0
- package/dist/viewer/fonts/jetbrains-mono/JetBrainsMono-Regular.woff2 +0 -0
- package/dist/viewer/fonts/jetbrains-mono/JetBrainsMono-SemiBold.woff2 +0 -0
- package/dist/viewer/index.html +15 -0
- package/dist/viewer/manifest.json +99 -0
- package/dist/viewer/version.json +1 -0
- package/package.json +37 -13
- package/PYTHON_CLI_PARITY.md +0 -265
- package/PYTHON_CLI_STRUCTURE_UPDATE.md +0 -246
- package/biome.json +0 -42
- package/bunfig.toml +0 -3
- package/dist/ai/claude-client.js +0 -71
- package/dist/ai/claude-client.js.map +0 -7
- package/dist/ai/context-provider.js +0 -129
- package/dist/ai/context-provider.js.map +0 -7
- package/dist/ai/tools.js +0 -231
- package/dist/ai/tools.js.map +0 -7
- package/dist/commands/migrate.js +0 -36
- package/dist/commands/migrate.js.map +0 -7
- package/dist/commands/project.js +0 -74
- package/dist/commands/project.js.map +0 -7
- package/dist/core/active-changeset.js +0 -52
- package/dist/core/active-changeset.js.map +0 -7
- package/dist/core/projection-engine.js +0 -288
- package/dist/core/projection-engine.js.map +0 -7
- package/dist/schemas/bundled/01-motivation-layer.schema.json +0 -942
- package/dist/schemas/bundled/02-business-layer.schema.json +0 -1293
- package/dist/schemas/bundled/03-security-layer.schema.json +0 -2177
- package/dist/schemas/bundled/04-application-layer.schema.json +0 -1328
- package/dist/schemas/bundled/05-technology-layer.schema.json +0 -1465
- package/dist/schemas/bundled/06-api-layer.schema.json +0 -1743
- package/dist/schemas/bundled/07-data-model-layer.schema.json +0 -1253
- package/dist/schemas/bundled/08-datastore-layer.schema.json +0 -892
- package/dist/schemas/bundled/09-ux-layer.schema.json +0 -1506
- package/dist/schemas/bundled/10-navigation-layer.schema.json +0 -843
- package/dist/schemas/bundled/11-apm-observability-layer.schema.json +0 -1430
- package/dist/schemas/bundled/12-testing-layer.schema.json +0 -1091
- package/dist/schemas/bundled/common/layer-extensions.schema.json +0 -266
- package/dist/schemas/bundled/common/predicates.schema.json +0 -493
- package/dist/schemas/bundled/common/relationships.schema.json +0 -791
- package/dist/schemas/bundled/common/source-references.schema.json +0 -71
- package/dist/schemas/bundled/link-registry.json +0 -1839
- package/dist/schemas/bundled/link-registry.schema.json +0 -339
- package/dist/schemas/bundled/relationship-catalog.json +0 -1302
- package/dist/schemas/bundled/relationship-type.schema.json +0 -221
- package/dist/utils/model-path.js +0 -22
- package/dist/utils/model-path.js.map +0 -7
- package/docs/TEST-INSTRUMENTATION.md +0 -405
- package/docs/telemetry.md +0 -427
- package/test-debug.js +0 -33
- package/test-special.mjs +0 -46
- package/test_runner.ts +0 -7
|
@@ -0,0 +1,836 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: LAYER_05_TECH
|
|
3
|
+
description: Expert knowledge for Technology Layer modeling in Documentation Robotics
|
|
4
|
+
triggers:
|
|
5
|
+
[
|
|
6
|
+
"infrastructure",
|
|
7
|
+
"node",
|
|
8
|
+
"kubernetes",
|
|
9
|
+
"docker",
|
|
10
|
+
"server",
|
|
11
|
+
"database",
|
|
12
|
+
"technology service",
|
|
13
|
+
"network",
|
|
14
|
+
"cloud",
|
|
15
|
+
"terraform",
|
|
16
|
+
"archimate technology"
|
|
17
|
+
]
|
|
18
|
+
version: 0.8.3
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
# Technology Layer Skill
|
|
22
|
+
|
|
23
|
+
**Layer Number:** 05
|
|
24
|
+
**Specification:** Metadata Model Spec v0.8.3
|
|
25
|
+
**Purpose:** Describes the technology infrastructure including hardware, software, networks, and facilities that support applications.
|
|
26
|
+
|
|
27
|
+
---
|
|
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
|
+
|
|
62
|
+
## Layer Overview
|
|
63
|
+
|
|
64
|
+
The Technology Layer captures **infrastructure and platform**:
|
|
65
|
+
|
|
66
|
+
- **COMPUTE** - Nodes, devices, system software
|
|
67
|
+
- **NETWORK** - Communication networks, paths, interfaces
|
|
68
|
+
- **STORAGE** - Artifacts (databases, files, configurations)
|
|
69
|
+
- **SERVICES** - Technology services (IaaS, PaaS)
|
|
70
|
+
- **AUTOMATION** - Infrastructure as Code (Terraform, Ansible, K8s)
|
|
71
|
+
|
|
72
|
+
This layer uses **ArchiMate 3.2 Technology Layer** standard with optional properties for Infrastructure as Code references, cloud provider specifics, and operational characteristics.
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## Entity Types
|
|
77
|
+
|
|
78
|
+
> **CLI Introspection:** Run `dr schema types technology` for the authoritative, always-current list of node types.
|
|
79
|
+
> Run `dr schema node <type-id>` for full attribute details on any type.
|
|
80
|
+
|
|
81
|
+
| Entity Type | Description | Key Attributes |
|
|
82
|
+
| --------------------------- | ------------------------------------------------------- | -------------------------------------------------------------------------------------------- |
|
|
83
|
+
| **Node** | Computational or physical resource that hosts artifacts | Types: server, container, vm, kubernetes-cluster, serverless-function, database-cluster |
|
|
84
|
+
| **Device** | Physical IT resource with processing capability | Types: server, workstation, mobile, iot-device, network-device, storage-appliance |
|
|
85
|
+
| **SystemSoftware** | Software that provides platform for applications | Types: operating-system, database, middleware, container-runtime, web-server, message-broker |
|
|
86
|
+
| **TechnologyCollaboration** | Aggregate of nodes working together | Examples: HA Cluster, CDN Network, Service Mesh |
|
|
87
|
+
| **TechnologyInterface** | Point of access where technology services are available | Protocols: HTTP, HTTPS, TCP, UDP, WebSocket, AMQP, MQTT, SQL, gRPC |
|
|
88
|
+
| **Path** | Link between nodes through which they exchange | Types: network, vpn, direct-connect, internet, peering |
|
|
89
|
+
| **CommunicationNetwork** | Set of structures that connects nodes | Types: lan, wan, vpn, internet, cdn, service-mesh, zero-trust-network |
|
|
90
|
+
| **TechnologyFunction** | Collection of technology behavior | Examples: Load Balancing, Data Replication, Auto-scaling, Monitoring |
|
|
91
|
+
| **TechnologyProcess** | Sequence of technology behaviors (CI/CD, provisioning) | Automation: ansible, terraform, kubernetes, cloudformation, pulumi |
|
|
92
|
+
| **TechnologyInteraction** | Unit of collective technology behavior | Examples: Database Replication, Cache Synchronization, Failover |
|
|
93
|
+
| **TechnologyEvent** | Technology state change | Types: startup, shutdown, failure, scaling, maintenance, alert |
|
|
94
|
+
| **TechnologyService** | Externally visible unit of technology functionality | Types: infrastructure, platform, storage, compute, network, database, messaging |
|
|
95
|
+
| **Artifact** | Physical piece of data used or produced | Types: database, file, configuration, binary, log, backup, docker-image, helm-chart |
|
|
96
|
+
|
|
97
|
+
---
|
|
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 "hosts" `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
|
+
|
|
266
|
+
## Intra-Layer Relationships
|
|
267
|
+
|
|
268
|
+
### Structural Relationships
|
|
269
|
+
|
|
270
|
+
| Source Type | Predicate | Target Type | Example |
|
|
271
|
+
| ----------------------- | --------------- | --------------------- | ------------------------------------------------- |
|
|
272
|
+
| Device | composes | Node | "Physical Server" composes "Virtual Machine" |
|
|
273
|
+
| Node | composes | TechnologyInterface | "API Server" composes "HTTPS Endpoint" |
|
|
274
|
+
| SystemSoftware | composes | TechnologyInterface | "PostgreSQL" composes "SQL Interface" |
|
|
275
|
+
| Node | aggregates | Device | Cluster aggregates multiple physical servers |
|
|
276
|
+
| TechnologyCollaboration | aggregates | Node | "K8s Cluster" aggregates "Worker Nodes" |
|
|
277
|
+
| Artifact | specializes | Artifact | "CustomerDatabase" specializes "Database" |
|
|
278
|
+
| Path | realizes | CommunicationNetwork | "VPN Tunnel" realizes "Secure Network" |
|
|
279
|
+
| TechnologyFunction | realizes | TechnologyService | "Load Balancing" realizes "Load Balancer Service" |
|
|
280
|
+
| TechnologyProcess | realizes | TechnologyService | "CI/CD Pipeline" realizes "Deployment Service" |
|
|
281
|
+
| SystemSoftware | realizes | TechnologyService | "PostgreSQL" realizes "Database Service" |
|
|
282
|
+
| Node | assigned-to | TechnologyFunction | "Edge Server" assigned to "CDN Caching" |
|
|
283
|
+
| TechnologyCollaboration | assigned-to | TechnologyInteraction | Cluster performs replication |
|
|
284
|
+
| Path | associated-with | Node | Network path connects nodes |
|
|
285
|
+
| Device | associated-with | CommunicationNetwork | Device connected to network |
|
|
286
|
+
| TechnologyInterface | serves | TechnologyService | Interface provides service access |
|
|
287
|
+
|
|
288
|
+
### Behavioral Relationships
|
|
289
|
+
|
|
290
|
+
| Source Type | Predicate | Target Type | Example |
|
|
291
|
+
| --------------------- | --------- | ------------------ | --------------------------------------------------- |
|
|
292
|
+
| TechnologyEvent | triggers | TechnologyProcess | "Node Failure" triggers "Failover Process" |
|
|
293
|
+
| TechnologyEvent | triggers | TechnologyFunction | "CPU Threshold" triggers "Auto-scaling Function" |
|
|
294
|
+
| TechnologyProcess | triggers | TechnologyEvent | "Deployment Complete" triggers "Health Check Event" |
|
|
295
|
+
| TechnologyProcess | flows-to | TechnologyProcess | "Build" flows to "Deploy" |
|
|
296
|
+
| TechnologyService | flows-to | TechnologyService | Service dependency chain |
|
|
297
|
+
| SystemSoftware | accesses | Artifact | "Database" accesses "Data Files" |
|
|
298
|
+
| TechnologyFunction | accesses | Artifact | "Backup Function" accesses "Backup Files" |
|
|
299
|
+
| TechnologyProcess | accesses | Artifact | "Deployment" accesses "Docker Images" |
|
|
300
|
+
| TechnologyInteraction | accesses | Artifact | "Replication" accesses "Database Replica" |
|
|
301
|
+
|
|
302
|
+
---
|
|
303
|
+
|
|
304
|
+
## Cross-Layer References
|
|
305
|
+
|
|
306
|
+
### Outgoing References (Technology → Other Layers)
|
|
307
|
+
|
|
308
|
+
| Target Layer | Reference Type | Example |
|
|
309
|
+
| ------------------------- | -------------------------------------------------- | -------------------------------------- |
|
|
310
|
+
| **Layer 1 (Motivation)** | TechnologyService supports **Goal** | Infrastructure supports business goals |
|
|
311
|
+
| **Layer 1 (Motivation)** | TechnologyService governed by **Principle** | Cloud-native principle |
|
|
312
|
+
| **Layer 1 (Motivation)** | Node governed by **Principle** | Infrastructure principles |
|
|
313
|
+
| **Layer 1 (Motivation)** | Node constrained by **Constraint** | Budget, region, compliance constraints |
|
|
314
|
+
| **Layer 1 (Motivation)** | Node fulfills **Requirement** | Performance, availability requirements |
|
|
315
|
+
| **Layer 1 (Motivation)** | SystemSoftware governed by **Principle** | Open-source principle |
|
|
316
|
+
| **Layer 1 (Motivation)** | SystemSoftware constrained by **Constraint** | Licensing, version constraints |
|
|
317
|
+
| **Layer 1 (Motivation)** | SystemSoftware fulfills **Requirement** | Technical requirements |
|
|
318
|
+
| **Layer 1 (Motivation)** | CommunicationNetwork governed by **Principle** | Zero-trust principle |
|
|
319
|
+
| **Layer 1 (Motivation)** | CommunicationNetwork constrained by **Constraint** | Network segmentation |
|
|
320
|
+
| **Layer 1 (Motivation)** | Artifact constrained by **Constraint** | Data residency, retention |
|
|
321
|
+
| **Layer 4 (Application)** | Node hosts **ApplicationComponent** | K8s pod hosts service |
|
|
322
|
+
| **Layer 4 (Application)** | TechnologyService serves **ApplicationService** | Database serves application |
|
|
323
|
+
| **Layer 4 (Application)** | Artifact stores **DataObject** | Database stores application data |
|
|
324
|
+
| **Layer 3 (Security)** | Artifact has **encryption** property | Data-at-rest encryption |
|
|
325
|
+
| **Layer 3 (Security)** | Artifact has **classification** property | Data classification level |
|
|
326
|
+
| **Layer 3 (Security)** | Artifact has **pii** property | Contains PII |
|
|
327
|
+
| **Layer 3 (Security)** | CommunicationNetwork has **security-policy** | Network security rules |
|
|
328
|
+
| **Layer 11 (APM)** | TechnologyService has **sla-target** | Availability, latency targets |
|
|
329
|
+
| **Layer 11 (APM)** | TechnologyService has **health-check** | Health monitoring endpoint |
|
|
330
|
+
| **Layer 11 (APM)** | Node has **monitoring-agent** | APM agent installation |
|
|
331
|
+
|
|
332
|
+
### Incoming References (Lower Layers → Technology)
|
|
333
|
+
|
|
334
|
+
Lower layers reference Technology layer to show:
|
|
335
|
+
|
|
336
|
+
- Applications depend on infrastructure
|
|
337
|
+
- APIs run on technology platforms
|
|
338
|
+
- Data stored in technology artifacts
|
|
339
|
+
|
|
340
|
+
---
|
|
341
|
+
|
|
342
|
+
## Codebase Detection Patterns
|
|
343
|
+
|
|
344
|
+
### Pattern 1: Kubernetes Deployment
|
|
345
|
+
|
|
346
|
+
```yaml
|
|
347
|
+
# Kubernetes deployment manifest
|
|
348
|
+
apiVersion: apps/v1
|
|
349
|
+
kind: Deployment
|
|
350
|
+
metadata:
|
|
351
|
+
name: user-service
|
|
352
|
+
namespace: production
|
|
353
|
+
spec:
|
|
354
|
+
replicas: 3
|
|
355
|
+
selector:
|
|
356
|
+
matchLabels:
|
|
357
|
+
app: user-service
|
|
358
|
+
template:
|
|
359
|
+
metadata:
|
|
360
|
+
labels:
|
|
361
|
+
app: user-service
|
|
362
|
+
spec:
|
|
363
|
+
containers:
|
|
364
|
+
- name: user-service
|
|
365
|
+
image: myregistry/user-service:1.0.0
|
|
366
|
+
ports:
|
|
367
|
+
- containerPort: 8080
|
|
368
|
+
```
|
|
369
|
+
|
|
370
|
+
**Maps to:**
|
|
371
|
+
|
|
372
|
+
- Node: "K8s Cluster Production" (type: kubernetes-cluster)
|
|
373
|
+
- Node: "User Service Pod" (type: container)
|
|
374
|
+
- Artifact: "myregistry/user-service:1.0.0" (type: docker-image)
|
|
375
|
+
- TechnologyInterface: "Port 8080" (protocol: HTTP)
|
|
376
|
+
|
|
377
|
+
### Pattern 2: Terraform Infrastructure
|
|
378
|
+
|
|
379
|
+
```hcl
|
|
380
|
+
# Terraform AWS infrastructure
|
|
381
|
+
resource "aws_instance" "web_server" {
|
|
382
|
+
ami = "ami-0c55b159cbfafe1f0"
|
|
383
|
+
instance_type = "t3.medium"
|
|
384
|
+
availability_zone = "us-east-1a"
|
|
385
|
+
|
|
386
|
+
tags = {
|
|
387
|
+
Name = "Web Server"
|
|
388
|
+
Environment = "production"
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
resource "aws_db_instance" "postgres" {
|
|
393
|
+
engine = "postgres"
|
|
394
|
+
engine_version = "14.7"
|
|
395
|
+
instance_class = "db.t3.medium"
|
|
396
|
+
storage_type = "gp3"
|
|
397
|
+
}
|
|
398
|
+
```
|
|
399
|
+
|
|
400
|
+
**Maps to:**
|
|
401
|
+
|
|
402
|
+
- Node: "Web Server EC2" (type: server, provider: aws, instance-type: t3.medium, region: us-east-1, az: us-east-1a)
|
|
403
|
+
- Node: "PostgreSQL RDS" (type: database-cluster, provider: aws)
|
|
404
|
+
- SystemSoftware: "PostgreSQL 14.7" (type: database, version: 14.7)
|
|
405
|
+
- Properties: iac-tool=terraform, iac-file=main.tf
|
|
406
|
+
|
|
407
|
+
### Pattern 3: Docker Compose
|
|
408
|
+
|
|
409
|
+
```yaml
|
|
410
|
+
# docker-compose.yml
|
|
411
|
+
version: "3.8"
|
|
412
|
+
services:
|
|
413
|
+
api:
|
|
414
|
+
image: myapp/api:latest
|
|
415
|
+
ports:
|
|
416
|
+
- "8080:8080"
|
|
417
|
+
depends_on:
|
|
418
|
+
- postgres
|
|
419
|
+
- redis
|
|
420
|
+
|
|
421
|
+
postgres:
|
|
422
|
+
image: postgres:14
|
|
423
|
+
environment:
|
|
424
|
+
POSTGRES_DB: myapp
|
|
425
|
+
POSTGRES_USER: admin
|
|
426
|
+
volumes:
|
|
427
|
+
- postgres-data:/var/lib/postgresql/data
|
|
428
|
+
|
|
429
|
+
redis:
|
|
430
|
+
image: redis:7-alpine
|
|
431
|
+
ports:
|
|
432
|
+
- "6379:6379"
|
|
433
|
+
|
|
434
|
+
volumes:
|
|
435
|
+
postgres-data:
|
|
436
|
+
```
|
|
437
|
+
|
|
438
|
+
**Maps to:**
|
|
439
|
+
|
|
440
|
+
- TechnologyCollaboration: "Docker Compose Stack"
|
|
441
|
+
- Node: "API Container" (type: container)
|
|
442
|
+
- SystemSoftware: "PostgreSQL 14" (type: database)
|
|
443
|
+
- SystemSoftware: "Redis 7" (type: middleware, subtype: cache)
|
|
444
|
+
- Artifact: "postgres-data" (type: volume)
|
|
445
|
+
- TechnologyInterface: "Redis Port 6379" (protocol: TCP)
|
|
446
|
+
|
|
447
|
+
### Pattern 4: Database Configuration
|
|
448
|
+
|
|
449
|
+
```python
|
|
450
|
+
# Database connection configuration
|
|
451
|
+
DATABASE_CONFIG = {
|
|
452
|
+
"host": "prod-db.example.com",
|
|
453
|
+
"port": 5432,
|
|
454
|
+
"database": "customer_db",
|
|
455
|
+
"user": "app_user",
|
|
456
|
+
"password": "${DB_PASSWORD}",
|
|
457
|
+
"pool_size": 20,
|
|
458
|
+
"max_overflow": 10,
|
|
459
|
+
"pool_timeout": 30
|
|
460
|
+
}
|
|
461
|
+
```
|
|
462
|
+
|
|
463
|
+
**Maps to:**
|
|
464
|
+
|
|
465
|
+
- Node: "Production Database" (type: database-cluster, host: prod-db.example.com)
|
|
466
|
+
- SystemSoftware: "PostgreSQL" (type: database, port: 5432)
|
|
467
|
+
- Artifact: "customer_db" (type: database)
|
|
468
|
+
- TechnologyInterface: "PostgreSQL Interface" (protocol: SQL, port: 5432)
|
|
469
|
+
- Properties: pool-size=20, max-overflow=10
|
|
470
|
+
|
|
471
|
+
### Pattern 5: CI/CD Pipeline
|
|
472
|
+
|
|
473
|
+
```yaml
|
|
474
|
+
# GitHub Actions CI/CD
|
|
475
|
+
name: Deploy to Production
|
|
476
|
+
on:
|
|
477
|
+
push:
|
|
478
|
+
branches: [main]
|
|
479
|
+
|
|
480
|
+
jobs:
|
|
481
|
+
build:
|
|
482
|
+
runs-on: ubuntu-latest
|
|
483
|
+
steps:
|
|
484
|
+
- uses: actions/checkout@v3
|
|
485
|
+
- name: Build Docker image
|
|
486
|
+
run: docker build -t myapp:${{ github.sha }} .
|
|
487
|
+
- name: Push to registry
|
|
488
|
+
run: docker push myregistry/myapp:${{ github.sha }}
|
|
489
|
+
|
|
490
|
+
deploy:
|
|
491
|
+
needs: build
|
|
492
|
+
runs-on: ubuntu-latest
|
|
493
|
+
steps:
|
|
494
|
+
- name: Deploy to Kubernetes
|
|
495
|
+
run: kubectl apply -f k8s/deployment.yaml
|
|
496
|
+
```
|
|
497
|
+
|
|
498
|
+
**Maps to:**
|
|
499
|
+
|
|
500
|
+
- TechnologyProcess: "CI/CD Pipeline" (pattern: ci-cd, automation: github-actions)
|
|
501
|
+
- Sub-processes: "Build", "Deploy"
|
|
502
|
+
- TechnologyFunction: "Docker Build", "Kubernetes Deploy"
|
|
503
|
+
- Artifact: "Docker Image" (type: docker-image)
|
|
504
|
+
|
|
505
|
+
### Pattern 6: Load Balancer Configuration
|
|
506
|
+
|
|
507
|
+
```nginx
|
|
508
|
+
# NGINX load balancer
|
|
509
|
+
upstream backend {
|
|
510
|
+
least_conn;
|
|
511
|
+
server app1.example.com:8080 weight=1;
|
|
512
|
+
server app2.example.com:8080 weight=1;
|
|
513
|
+
server app3.example.com:8080 weight=1;
|
|
514
|
+
}
|
|
515
|
+
|
|
516
|
+
server {
|
|
517
|
+
listen 443 ssl;
|
|
518
|
+
server_name api.example.com;
|
|
519
|
+
|
|
520
|
+
ssl_certificate /etc/nginx/ssl/cert.pem;
|
|
521
|
+
ssl_certificate_key /etc/nginx/ssl/key.pem;
|
|
522
|
+
|
|
523
|
+
location / {
|
|
524
|
+
proxy_pass http://backend;
|
|
525
|
+
}
|
|
526
|
+
}
|
|
527
|
+
```
|
|
528
|
+
|
|
529
|
+
**Maps to:**
|
|
530
|
+
|
|
531
|
+
- Node: "NGINX Load Balancer" (type: server)
|
|
532
|
+
- SystemSoftware: "NGINX" (type: web-server, subtype: load-balancer)
|
|
533
|
+
- TechnologyFunction: "Load Balancing" (strategy: least-conn)
|
|
534
|
+
- TechnologyInterface: "HTTPS Endpoint" (protocol: HTTPS, port: 443)
|
|
535
|
+
- TechnologyCollaboration: "Backend Pool" (aggregates app1, app2, app3)
|
|
536
|
+
|
|
537
|
+
---
|
|
538
|
+
|
|
539
|
+
## Modeling Workflow
|
|
540
|
+
|
|
541
|
+
### Step 1: Identify Infrastructure Nodes
|
|
542
|
+
|
|
543
|
+
```bash
|
|
544
|
+
# Kubernetes cluster
|
|
545
|
+
dr add technology node "k8s-cluster-prod" \
|
|
546
|
+
--description "Production Kubernetes cluster"
|
|
547
|
+
|
|
548
|
+
# Virtual machines
|
|
549
|
+
dr add technology node "web-server-01" \
|
|
550
|
+
--description "Web application server VM"
|
|
551
|
+
|
|
552
|
+
# Serverless function
|
|
553
|
+
dr add technology node "order-processor-lambda" \
|
|
554
|
+
--description "Lambda function for order processing"
|
|
555
|
+
|
|
556
|
+
# Database cluster
|
|
557
|
+
dr add technology node "postgres-cluster" \
|
|
558
|
+
--description "PostgreSQL RDS cluster"
|
|
559
|
+
```
|
|
560
|
+
|
|
561
|
+
### Step 2: Define System Software
|
|
562
|
+
|
|
563
|
+
```bash
|
|
564
|
+
# Database system
|
|
565
|
+
dr add technology system-software "postgresql-14" \
|
|
566
|
+
--description "PostgreSQL relational database"
|
|
567
|
+
|
|
568
|
+
# Container runtime
|
|
569
|
+
dr add technology system-software "docker" \
|
|
570
|
+
--description "Docker container runtime"
|
|
571
|
+
|
|
572
|
+
# Web server
|
|
573
|
+
dr add technology system-software "nginx" \
|
|
574
|
+
--description "NGINX web server and load balancer"
|
|
575
|
+
|
|
576
|
+
# Message broker
|
|
577
|
+
dr add technology system-software "rabbitmq" \
|
|
578
|
+
--description "RabbitMQ message broker"
|
|
579
|
+
```
|
|
580
|
+
|
|
581
|
+
### Step 3: Model Technology Services
|
|
582
|
+
|
|
583
|
+
```bash
|
|
584
|
+
# Infrastructure service
|
|
585
|
+
dr add technology service "kubernetes-orchestration" \
|
|
586
|
+
--description "Container orchestration platform"
|
|
587
|
+
|
|
588
|
+
# Database service
|
|
589
|
+
dr add technology service "postgres-database" \
|
|
590
|
+
--description "PostgreSQL database service"
|
|
591
|
+
|
|
592
|
+
# Storage service
|
|
593
|
+
dr add technology service "s3-object-storage" \
|
|
594
|
+
--description "S3 object storage for files and backups"
|
|
595
|
+
|
|
596
|
+
# Link software to service
|
|
597
|
+
dr relationship add technology.systemsoftware.postgresql-14 \
|
|
598
|
+
technology.technologyservice.postgres-database --predicate realizes
|
|
599
|
+
```
|
|
600
|
+
|
|
601
|
+
### Step 4: Define Communication Networks
|
|
602
|
+
|
|
603
|
+
```bash
|
|
604
|
+
# VPC network
|
|
605
|
+
dr add technology network "production-vpc" \
|
|
606
|
+
--description "Production VPC network"
|
|
607
|
+
|
|
608
|
+
# Subnet
|
|
609
|
+
dr add technology network "private-subnet-1a" \
|
|
610
|
+
--description "Private subnet in AZ 1a"
|
|
611
|
+
|
|
612
|
+
# VPN
|
|
613
|
+
dr add technology network "site-to-site-vpn" \
|
|
614
|
+
--description "Site-to-site VPN to on-premise datacenter"
|
|
615
|
+
```
|
|
616
|
+
|
|
617
|
+
### Step 5: Model Artifacts
|
|
618
|
+
|
|
619
|
+
```bash
|
|
620
|
+
# Database artifact
|
|
621
|
+
dr add technology artifact "customer-database" \
|
|
622
|
+
--description "Customer data database"
|
|
623
|
+
|
|
624
|
+
# Docker image
|
|
625
|
+
dr add technology artifact "user-service-image" \
|
|
626
|
+
--description "User service Docker image"
|
|
627
|
+
|
|
628
|
+
# Configuration file
|
|
629
|
+
dr add technology artifact "app-config" \
|
|
630
|
+
--description "Application configuration file"
|
|
631
|
+
|
|
632
|
+
# Log files
|
|
633
|
+
dr add technology artifact "application-logs" \
|
|
634
|
+
--description "Application log files"
|
|
635
|
+
|
|
636
|
+
# Link artifact to node
|
|
637
|
+
dr relationship add technology.node.postgres-cluster \
|
|
638
|
+
technology.artifact.customer-database --predicate stores
|
|
639
|
+
```
|
|
640
|
+
|
|
641
|
+
### Step 6: Model Infrastructure as Code
|
|
642
|
+
|
|
643
|
+
```bash
|
|
644
|
+
# Terraform process
|
|
645
|
+
dr add technology process "provision-infrastructure" \
|
|
646
|
+
--description "Terraform infrastructure provisioning"
|
|
647
|
+
|
|
648
|
+
# Ansible process
|
|
649
|
+
dr add technology process "configure-servers" \
|
|
650
|
+
--description "Ansible server configuration"
|
|
651
|
+
|
|
652
|
+
# Kubernetes deployment process
|
|
653
|
+
dr add technology process "deploy-to-k8s" \
|
|
654
|
+
--description "Deploy application to Kubernetes"
|
|
655
|
+
```
|
|
656
|
+
|
|
657
|
+
### Step 7: Define Technology Functions
|
|
658
|
+
|
|
659
|
+
```bash
|
|
660
|
+
# Load balancing
|
|
661
|
+
dr add technology function "load-balancing" \
|
|
662
|
+
--description "Distribute traffic across backend servers"
|
|
663
|
+
|
|
664
|
+
# Auto-scaling
|
|
665
|
+
dr add technology function "auto-scaling" \
|
|
666
|
+
--description "Automatically scale based on CPU utilization"
|
|
667
|
+
|
|
668
|
+
# Backup
|
|
669
|
+
dr add technology function "database-backup" \
|
|
670
|
+
--description "Automated database backup"
|
|
671
|
+
|
|
672
|
+
# Assign function to node
|
|
673
|
+
dr relationship add technology.node.k8s-cluster-prod \
|
|
674
|
+
technology.technologyfunction.auto-scaling --predicate assigned-to
|
|
675
|
+
```
|
|
676
|
+
|
|
677
|
+
### Step 8: Cross-Layer Integration
|
|
678
|
+
|
|
679
|
+
```bash
|
|
680
|
+
# Link to application layer
|
|
681
|
+
dr relationship add technology.node.k8s-cluster-prod \
|
|
682
|
+
application.applicationcomponent.user-service --predicate hosts
|
|
683
|
+
|
|
684
|
+
# Link to motivation layer
|
|
685
|
+
dr relationship add technology.technologyservice.kubernetes-orchestration \
|
|
686
|
+
motivation.goal.improve-deployment-frequency --predicate supports
|
|
687
|
+
|
|
688
|
+
dr relationship add technology.node.k8s-cluster-prod \
|
|
689
|
+
motivation.principle.cloud-native-architecture --predicate governed-by
|
|
690
|
+
|
|
691
|
+
# Link to APM layer
|
|
692
|
+
dr relationship add technology.technologyservice.postgres-database \
|
|
693
|
+
apm.metric.database-query-latency --predicate monitored-by
|
|
694
|
+
```
|
|
695
|
+
|
|
696
|
+
### Step 9: Validate
|
|
697
|
+
|
|
698
|
+
```bash
|
|
699
|
+
dr validate --layers technology
|
|
700
|
+
dr validate --relationships
|
|
701
|
+
```
|
|
702
|
+
|
|
703
|
+
---
|
|
704
|
+
|
|
705
|
+
## Cloud Provider Patterns
|
|
706
|
+
|
|
707
|
+
### AWS Pattern
|
|
708
|
+
|
|
709
|
+
```
|
|
710
|
+
TechnologyCollaboration: "AWS Production Environment"
|
|
711
|
+
├── contains → Node: "EKS Cluster" (provider: aws, region: us-east-1)
|
|
712
|
+
│ ├── hosts → ApplicationComponent: "Microservices"
|
|
713
|
+
│ └── uses → TechnologyService: "EKS Orchestration"
|
|
714
|
+
├── contains → Node: "RDS PostgreSQL" (provider: aws, multi-az: true)
|
|
715
|
+
│ └── realizes → TechnologyService: "Database Service"
|
|
716
|
+
├── contains → Artifact: "S3 Bucket" (provider: aws, storage-class: standard)
|
|
717
|
+
└── contains → CommunicationNetwork: "VPC" (cidr: 10.0.0.0/16)
|
|
718
|
+
├── contains → Subnet: "Public Subnet" (cidr: 10.0.1.0/24)
|
|
719
|
+
└── contains → Subnet: "Private Subnet" (cidr: 10.0.2.0/24)
|
|
720
|
+
```
|
|
721
|
+
|
|
722
|
+
### Kubernetes Pattern
|
|
723
|
+
|
|
724
|
+
```
|
|
725
|
+
Node: "Kubernetes Cluster"
|
|
726
|
+
├── type: kubernetes-cluster
|
|
727
|
+
├── hosts → Node: "Namespace: production"
|
|
728
|
+
│ ├── hosts → Node: "Deployment: user-service"
|
|
729
|
+
│ │ ├── replicas: 3
|
|
730
|
+
│ │ └── hosts → Node: "Pod: user-service-xyz"
|
|
731
|
+
│ │ └── hosts → ApplicationComponent: "UserService"
|
|
732
|
+
│ └── uses → Artifact: "ConfigMap: app-config"
|
|
733
|
+
└── uses → TechnologyFunction: "Auto-scaling" (HPA)
|
|
734
|
+
```
|
|
735
|
+
|
|
736
|
+
### Hybrid Cloud Pattern
|
|
737
|
+
|
|
738
|
+
```
|
|
739
|
+
TechnologyCollaboration: "Hybrid Cloud Architecture"
|
|
740
|
+
├── contains → Node: "AWS EKS Cluster" (provider: aws)
|
|
741
|
+
├── contains → Node: "On-Premise K8s" (provider: onprem)
|
|
742
|
+
├── connected-by → Path: "Direct Connect" (type: direct-connect)
|
|
743
|
+
└── secured-by → CommunicationNetwork: "Zero-Trust Network"
|
|
744
|
+
```
|
|
745
|
+
|
|
746
|
+
---
|
|
747
|
+
|
|
748
|
+
## Best Practices
|
|
749
|
+
|
|
750
|
+
1. **Node Types Matter** - server vs container vs serverless have different operational characteristics
|
|
751
|
+
2. **Track IaC References** - Link to Terraform, Ansible, Kubernetes manifests
|
|
752
|
+
3. **Model HA Clusters** - Use TechnologyCollaboration for high-availability setups
|
|
753
|
+
4. **Network Segmentation** - Model VPCs, subnets, security zones explicitly
|
|
754
|
+
5. **Artifact Encryption** - Mark encryption status (at-rest, in-transit, both)
|
|
755
|
+
6. **Version Everything** - Track software versions, image tags, schema versions
|
|
756
|
+
7. **Link to Motivation** - Infrastructure choices trace to principles and constraints
|
|
757
|
+
8. **Monitor SLAs** - Technology services have availability and latency targets
|
|
758
|
+
9. **Document Automation** - Reference IaC tools and CI/CD pipelines
|
|
759
|
+
10. **Cloud-Agnostic When Possible** - Use ArchiMate types rather than provider-specific terms
|
|
760
|
+
|
|
761
|
+
---
|
|
762
|
+
|
|
763
|
+
## Infrastructure as Code Integration
|
|
764
|
+
|
|
765
|
+
When infrastructure is managed as code:
|
|
766
|
+
|
|
767
|
+
```yaml
|
|
768
|
+
technology-node:
|
|
769
|
+
id: "k8s-cluster-prod"
|
|
770
|
+
type: "kubernetes-cluster"
|
|
771
|
+
properties:
|
|
772
|
+
iac-tool: "terraform"
|
|
773
|
+
iac-file: "infrastructure/eks-cluster.tf"
|
|
774
|
+
iac-module: "eks-cluster"
|
|
775
|
+
iac-version: "4.0.0"
|
|
776
|
+
provider: "aws"
|
|
777
|
+
region: "us-east-1"
|
|
778
|
+
```
|
|
779
|
+
|
|
780
|
+
**IaC Tools Supported:**
|
|
781
|
+
|
|
782
|
+
- **Terraform** - Declarative infrastructure
|
|
783
|
+
- **Ansible** - Configuration management
|
|
784
|
+
- **Kubernetes** - Container orchestration manifests
|
|
785
|
+
- **CloudFormation** - AWS-specific IaC
|
|
786
|
+
- **Pulumi** - Programming language IaC
|
|
787
|
+
- **Helm** - Kubernetes package manager
|
|
788
|
+
|
|
789
|
+
---
|
|
790
|
+
|
|
791
|
+
## Validation Tips
|
|
792
|
+
|
|
793
|
+
| Issue | Cause | Fix |
|
|
794
|
+
| ---------------------- | --------------------------------------------------- | -------------------------------------- |
|
|
795
|
+
| Orphaned Node | Node not hosting applications or realizing services | Link to application layer or remove |
|
|
796
|
+
| Unhosted Application | ApplicationComponent not deployed to any node | Add deployment link to technology node |
|
|
797
|
+
| Missing Networks | Nodes exist but no network connectivity | Model CommunicationNetwork and Paths |
|
|
798
|
+
| Untracked Artifacts | Databases, images, configs not modeled | Add Artifact entities |
|
|
799
|
+
| No IaC Reference | Infrastructure lacks automation reference | Add iac-tool and iac-file properties |
|
|
800
|
+
| Missing SLA Targets | Services lack availability/latency targets | Add SLA properties for monitoring |
|
|
801
|
+
| No Security Properties | Artifacts lack encryption/classification | Add security properties |
|
|
802
|
+
|
|
803
|
+
---
|
|
804
|
+
|
|
805
|
+
## Quick Reference
|
|
806
|
+
|
|
807
|
+
**Add Commands:**
|
|
808
|
+
|
|
809
|
+
```bash
|
|
810
|
+
dr add technology node <name>
|
|
811
|
+
dr add technology system-software <name>
|
|
812
|
+
dr add technology service <name>
|
|
813
|
+
dr add technology network <name>
|
|
814
|
+
dr add technology artifact <name>
|
|
815
|
+
dr add technology function <name>
|
|
816
|
+
dr add technology process <name>
|
|
817
|
+
```
|
|
818
|
+
|
|
819
|
+
**Relationship Commands:**
|
|
820
|
+
|
|
821
|
+
```bash
|
|
822
|
+
dr relationship add <node> <application-component> --predicate hosts
|
|
823
|
+
dr relationship add <system-software> <service> --predicate realizes
|
|
824
|
+
dr relationship add <node> <function> --predicate assigned-to
|
|
825
|
+
dr relationship add <node> <artifact> --predicate stores
|
|
826
|
+
dr relationship add <network> <node> --predicate connects
|
|
827
|
+
```
|
|
828
|
+
|
|
829
|
+
**Cross-Layer Commands:**
|
|
830
|
+
|
|
831
|
+
```bash
|
|
832
|
+
dr relationship add <technology-node> <application-component> --predicate hosts
|
|
833
|
+
dr relationship add <technology-service> <motivation-goal> --predicate supports
|
|
834
|
+
dr relationship add <technology-node> <motivation-principle> --predicate governed-by
|
|
835
|
+
dr relationship add <technology-service> <apm-metric> --predicate monitored-by
|
|
836
|
+
```
|