@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
|
@@ -1,76 +1,29 @@
|
|
|
1
1
|
{
|
|
2
|
-
"specVersion": "0.
|
|
2
|
+
"specVersion": "0.11.0",
|
|
3
3
|
"layer": {
|
|
4
4
|
"id": "product",
|
|
5
5
|
"number": 3,
|
|
6
6
|
"name": "Product Layer",
|
|
7
|
-
"description": "
|
|
7
|
+
"description": "Frames the system from a product-management point of view: the personas it serves, the software capabilities it must possess, the features that deliver them, the user workflows that exercise them and the milestones that schedule delivery. It adapts the ArchiMate 3.2 strategy vocabulary rather than adopting it: a software capability is an ability of the software platform, not ArchiMate's Capability, which is the organization's ability and is modelled as business.businesscapability. Product elements describe what the software offers and to whom, never how it is built. Modelling rules: realization runs upward through product. Application and technology services realize software capabilities and features, views realize features, and navigation flows and flow steps realize user workflows and their steps; product elements in turn realize business behaviour, a software capability realizing the business function it carries out and a user workflow the business process the user performs. A feature realizes the software capabilities it exercises; software capabilities aggregate narrower capabilities, and capabilities and features may depend on their own kind. Features and user workflows serve the personas they are designed for; a persona describes a kind of person, so it references the stakeholder and business role it stands for rather than realizing or serving them. A user workflow composes its steps, steps flow to steps, and each step uses the features it exercises; a workflow reaches features and software capabilities only through its steps. Software capabilities support goals; software capabilities and features satisfy requirements; features deliver value and workflows deliver outcomes. Software capabilities and features are scheduled for milestones, and milestones precede milestones.",
|
|
8
8
|
"inspired_by": {
|
|
9
9
|
"standard": "ArchiMate 3.2 Strategy Extension + Product Management Practice",
|
|
10
10
|
"version": "3.2",
|
|
11
11
|
"url": "https://pubs.opengroup.org/architecture/archimate32-doc/"
|
|
12
12
|
},
|
|
13
13
|
"node_types": [
|
|
14
|
-
"product.
|
|
14
|
+
"product.softwarecapability",
|
|
15
15
|
"product.feature",
|
|
16
16
|
"product.milestone",
|
|
17
17
|
"product.persona",
|
|
18
|
-
"product.userworkflow"
|
|
18
|
+
"product.userworkflow",
|
|
19
|
+
"product.workflowstep"
|
|
19
20
|
]
|
|
20
21
|
},
|
|
21
22
|
"nodeSchemas": {
|
|
22
|
-
"capability": {
|
|
23
|
-
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
24
|
-
"title": "Capability",
|
|
25
|
-
"description": "An ability the product possesses, independent of how it's implemented",
|
|
26
|
-
"allOf": [
|
|
27
|
-
{
|
|
28
|
-
"$ref": "urn:dr:spec:base:spec-node"
|
|
29
|
-
}
|
|
30
|
-
],
|
|
31
|
-
"properties": {
|
|
32
|
-
"spec_node_id": {
|
|
33
|
-
"const": "product.capability"
|
|
34
|
-
},
|
|
35
|
-
"layer_id": {
|
|
36
|
-
"const": "product"
|
|
37
|
-
},
|
|
38
|
-
"type": {
|
|
39
|
-
"const": "capability"
|
|
40
|
-
},
|
|
41
|
-
"attributes": {
|
|
42
|
-
"type": "object",
|
|
43
|
-
"properties": {
|
|
44
|
-
"documentation": {
|
|
45
|
-
"type": "string",
|
|
46
|
-
"description": "Detailed description of the capability"
|
|
47
|
-
},
|
|
48
|
-
"status": {
|
|
49
|
-
"type": "string",
|
|
50
|
-
"enum": [
|
|
51
|
-
"proposed",
|
|
52
|
-
"planned",
|
|
53
|
-
"developing",
|
|
54
|
-
"delivered",
|
|
55
|
-
"deprecated"
|
|
56
|
-
],
|
|
57
|
-
"description": "Lifecycle status of the capability"
|
|
58
|
-
},
|
|
59
|
-
"properties": {
|
|
60
|
-
"type": "object",
|
|
61
|
-
"description": "Cross-layer properties"
|
|
62
|
-
}
|
|
63
|
-
},
|
|
64
|
-
"required": ["status"],
|
|
65
|
-
"additionalProperties": false
|
|
66
|
-
}
|
|
67
|
-
},
|
|
68
|
-
"$id": "urn:dr:spec:node:product.capability"
|
|
69
|
-
},
|
|
70
23
|
"feature": {
|
|
71
24
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
72
25
|
"title": "Feature",
|
|
73
|
-
"description": "A user-visible
|
|
26
|
+
"description": "A unit of product functionality that a persona can directly perceive and invoke, such as a screen, command, setting or behaviour. It is described in user terms and can be prioritised, sized and scheduled on its own, and it realises one or more software capabilities. Use SoftwareCapability instead when the element names an ability the software must have regardless of which user-visible functionality provides it, and is not itself prioritised or sized as a deliverable. Use UserWorkflow instead when the element is a goal-directed sequence of user actions that passes through one or more features rather than a single piece of functionality. Use WorkflowStep instead when the element is one ordered action or experience within a specific user journey that exercises a feature, rather than the functionality itself. Use Milestone instead when the element is a dated delivery target that groups features, rather than functionality the user interacts with.",
|
|
74
27
|
"allOf": [
|
|
75
28
|
{
|
|
76
29
|
"$ref": "urn:dr:spec:base:spec-node"
|
|
@@ -123,12 +76,24 @@
|
|
|
123
76
|
"additionalProperties": false
|
|
124
77
|
}
|
|
125
78
|
},
|
|
79
|
+
"x-dr-standard": "Product Management Practice: Feature (backlog/roadmap item). There is no direct ArchiMate 3.2 element; it is modelled as realising a Strategy Capability (§7.3.1).",
|
|
80
|
+
"x-dr-evidence": [
|
|
81
|
+
"a feature-flag definition (e.g. LaunchDarkly, Unleash or a features.yml key) that gates a user-visible behaviour such as 'bulk-export' or 'dark-mode'",
|
|
82
|
+
"a Gherkin .feature file whose 'Feature:' block describes user-facing functionality with acceptance scenarios",
|
|
83
|
+
"a release-notes, changelog or user-guide entry announcing user-visible functionality (e.g. 'New: export reports to CSV') that is traceable to a set of routes, views or endpoints"
|
|
84
|
+
],
|
|
85
|
+
"x-dr-distinguish": {
|
|
86
|
+
"product.softwarecapability": "the element names an ability the software must have regardless of which user-visible functionality provides it, and is not itself prioritised or sized as a deliverable",
|
|
87
|
+
"product.userworkflow": "the element is a goal-directed sequence of user actions that passes through one or more features rather than a single piece of functionality",
|
|
88
|
+
"product.workflowstep": "the element is one ordered action or experience within a specific user journey that exercises a feature, rather than the functionality itself",
|
|
89
|
+
"product.milestone": "the element is a dated delivery target that groups features, rather than functionality the user interacts with"
|
|
90
|
+
},
|
|
126
91
|
"$id": "urn:dr:spec:node:product.feature"
|
|
127
92
|
},
|
|
128
93
|
"milestone": {
|
|
129
94
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
130
95
|
"title": "Milestone",
|
|
131
|
-
"description": "A time-bound delivery target
|
|
96
|
+
"description": "A named, time-bound delivery target, such as a release, version or roadmap phase, against which features and software capabilities are scheduled. It is defined by its target date or period and the scope assigned to it, not by any functionality of its own. Use Feature instead when the element is a user-visible unit of functionality being delivered, rather than the dated target or release it is delivered in. Use SoftwareCapability instead when the element names an ability the software has or should have, independent of when it is delivered, rather than a scheduled delivery point.",
|
|
132
97
|
"allOf": [
|
|
133
98
|
{
|
|
134
99
|
"$ref": "urn:dr:spec:base:spec-node"
|
|
@@ -167,12 +132,22 @@
|
|
|
167
132
|
"additionalProperties": false
|
|
168
133
|
}
|
|
169
134
|
},
|
|
135
|
+
"x-dr-standard": "ArchiMate 3.2 §12.2.4 Plateau (closest analogue; partly §12.2.3 Implementation Event). The Strategy Layer has no direct equivalent.",
|
|
136
|
+
"x-dr-evidence": [
|
|
137
|
+
"An issue-tracker milestone or fixVersion (e.g. a GitHub milestone, Jira release) with a due date and a set of linked feature issues.",
|
|
138
|
+
"A ROADMAP.md or planning document section headed by a version or quarter (e.g. 'v2.0 — Q3 2025') that lists the features targeted for it.",
|
|
139
|
+
"Feature-flag or configuration entries annotated with a target release (e.g. 'enabled_in: 3.1', 'since: v2.0'), or an 'Unreleased' or upcoming-version section in CHANGELOG.md."
|
|
140
|
+
],
|
|
141
|
+
"x-dr-distinguish": {
|
|
142
|
+
"product.feature": "the element is a user-visible unit of functionality being delivered, rather than the dated target or release it is delivered in.",
|
|
143
|
+
"product.softwarecapability": "the element names an ability the software has or should have, independent of when it is delivered, rather than a scheduled delivery point."
|
|
144
|
+
},
|
|
170
145
|
"$id": "urn:dr:spec:node:product.milestone"
|
|
171
146
|
},
|
|
172
147
|
"persona": {
|
|
173
148
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
174
149
|
"title": "Persona",
|
|
175
|
-
"description": "A
|
|
150
|
+
"description": "A named, fictional archetype of a class of the product's actual or intended users, characterised by shared goals, behaviours, proficiency and pain points, against which features and workflows are designed. It describes who the user is, not what they do in the product or what access they are granted. Use UserWorkflow instead when the artefact describes a goal-directed journey the user takes through the product rather than the characteristics of the user taking it. Use WorkflowStep instead when the artefact is a single action or experience a user has at one point in a journey, even if phrased as 'the admin does X'.",
|
|
176
151
|
"allOf": [
|
|
177
152
|
{
|
|
178
153
|
"$ref": "urn:dr:spec:base:spec-node"
|
|
@@ -210,12 +185,83 @@
|
|
|
210
185
|
"additionalProperties": false
|
|
211
186
|
}
|
|
212
187
|
},
|
|
188
|
+
"x-dr-standard": "Product Management Practice: Persona (Cooper, goal-directed design); no direct ArchiMate 3.2 equivalent, nearest are Stakeholder (§6.2.1) and Business Role (§8.2.2)",
|
|
189
|
+
"x-dr-evidence": [
|
|
190
|
+
"persona documents in the repository (e.g. docs/personas/*.md or a product brief) naming an archetype with goals, frustrations and skill level",
|
|
191
|
+
"user stories or acceptance criteria in issues or BDD feature files phrased 'As a <named user type>, I want ...' that recur across many stories",
|
|
192
|
+
"a user-segment or user-type discriminator (e.g. onboarding question 'I am a developer / designer', analytics segment definitions, feature-flag targeting rules) that tailors UI or content per user class rather than granting permissions"
|
|
193
|
+
],
|
|
194
|
+
"x-dr-distinguish": {
|
|
195
|
+
"product.userworkflow": "the artefact describes a goal-directed journey the user takes through the product rather than the characteristics of the user taking it",
|
|
196
|
+
"product.workflowstep": "the artefact is a single action or experience a user has at one point in a journey, even if phrased as 'the admin does X'"
|
|
197
|
+
},
|
|
213
198
|
"$id": "urn:dr:spec:node:product.persona"
|
|
214
199
|
},
|
|
200
|
+
"softwarecapability": {
|
|
201
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
202
|
+
"title": "SoftwareCapability",
|
|
203
|
+
"description": "An ability of the software platform, stated as what the software can do (e.g. 'Save documents to files', 'Full-text search', 'Payment processing') rather than as a deliverable unit or a user journey. It is realized by one or more features, application services or technology services, and it realizes the business functions it carries out (saving documents to files realizes the business function of sharing data). Use BusinessCapability (business layer) instead when the ability belongs to the organization and would remain if different software, or none, provided it (e.g. 'Share data with partners'): a business capability is what the business can do, a software capability is what the platform can do. Use Feature instead when the element is a discrete, user-visible, prioritizable and sizable unit of functionality that ships (e.g. 'Apple Pay checkout button') rather than the enduring ability it contributes to (e.g. 'Payment processing'). Use UserWorkflow instead when the element describes an ordered sequence of user actions toward a goal rather than an ability the software has regardless of who uses it or in what order. Use WorkflowStep instead when the element is a single user action or experience at a position within a workflow rather than an ability that many steps may rely on. Use Milestone instead when the element is a dated delivery target that groups software capabilities or features rather than an ability itself.",
|
|
204
|
+
"allOf": [
|
|
205
|
+
{
|
|
206
|
+
"$ref": "urn:dr:spec:base:spec-node"
|
|
207
|
+
}
|
|
208
|
+
],
|
|
209
|
+
"properties": {
|
|
210
|
+
"spec_node_id": {
|
|
211
|
+
"const": "product.softwarecapability"
|
|
212
|
+
},
|
|
213
|
+
"layer_id": {
|
|
214
|
+
"const": "product"
|
|
215
|
+
},
|
|
216
|
+
"type": {
|
|
217
|
+
"const": "softwarecapability"
|
|
218
|
+
},
|
|
219
|
+
"attributes": {
|
|
220
|
+
"type": "object",
|
|
221
|
+
"properties": {
|
|
222
|
+
"documentation": {
|
|
223
|
+
"type": "string",
|
|
224
|
+
"description": "Detailed description of the software capability"
|
|
225
|
+
},
|
|
226
|
+
"status": {
|
|
227
|
+
"type": "string",
|
|
228
|
+
"enum": [
|
|
229
|
+
"proposed",
|
|
230
|
+
"planned",
|
|
231
|
+
"developing",
|
|
232
|
+
"delivered",
|
|
233
|
+
"deprecated"
|
|
234
|
+
],
|
|
235
|
+
"description": "Lifecycle status of the software capability"
|
|
236
|
+
},
|
|
237
|
+
"properties": {
|
|
238
|
+
"type": "object",
|
|
239
|
+
"description": "Cross-layer properties"
|
|
240
|
+
}
|
|
241
|
+
},
|
|
242
|
+
"required": ["status"],
|
|
243
|
+
"additionalProperties": false
|
|
244
|
+
}
|
|
245
|
+
},
|
|
246
|
+
"x-dr-standard": "Adapted from ArchiMate 3.2 §7.3.1 Capability (Strategy Layer) as a capability of the software platform rather than of the organization; the organization's capability is business.businesscapability",
|
|
247
|
+
"x-dr-evidence": [
|
|
248
|
+
"a product capability map, roadmap or README section headed 'Capabilities' listing abilities such as 'Search', 'Billing', 'Notifications' that are realized by several features",
|
|
249
|
+
"a top-level domain module, bounded context or service named for an ability of the platform (e.g. billing/, search/, export/) whose submodules implement several distinct user-facing features",
|
|
250
|
+
"a declared capability set in a manifest or handshake (e.g. a 'capabilities' object in a plugin manifest or protocol initialization response) enumerating abilities the system offers independent of specific UI entry points"
|
|
251
|
+
],
|
|
252
|
+
"x-dr-distinguish": {
|
|
253
|
+
"business.businesscapability": "the ability belongs to the organization and would remain if different software, or none, provided it (e.g. 'Share data with partners'), rather than an ability of the software platform (e.g. 'Save documents to files')",
|
|
254
|
+
"product.feature": "the element is a discrete, user-visible, prioritizable and sizable unit of functionality that ships (e.g. 'Apple Pay checkout button') rather than the enduring ability it contributes to (e.g. 'Payment processing')",
|
|
255
|
+
"product.userworkflow": "the element describes an ordered sequence of user actions toward a goal rather than an ability the product possesses regardless of who uses it or in what order",
|
|
256
|
+
"product.workflowstep": "the element is a single user action or experience at a position within a workflow rather than an ability that many steps may rely on",
|
|
257
|
+
"product.milestone": "the element is a dated delivery target that groups software capabilities or features rather than an ability itself"
|
|
258
|
+
},
|
|
259
|
+
"$id": "urn:dr:spec:node:product.softwarecapability"
|
|
260
|
+
},
|
|
215
261
|
"userworkflow": {
|
|
216
262
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
217
263
|
"title": "UserWorkflow",
|
|
218
|
-
"description": "
|
|
264
|
+
"description": "An ordered, end-to-end journey of user-facing steps that a persona performs through the product to reach one goal, described from the user's point of view and independent of screens, routes or code. It is composed of WorkflowSteps and spans the features those steps exercise. Use WorkflowStep instead when the element is a single action or experience at one position in a journey, not the whole sequence from trigger to goal. Use Feature instead when the element is a unit of functionality the user can switch on, buy or ship, rather than the ordered path a user takes to reach a goal. Use SoftwareCapability instead when the element names an ability the software has (e.g. 'password recovery') with no ordering of user actions.",
|
|
219
265
|
"allOf": [
|
|
220
266
|
{
|
|
221
267
|
"$ref": "urn:dr:spec:base:spec-node"
|
|
@@ -252,75 +298,98 @@
|
|
|
252
298
|
"additionalProperties": false
|
|
253
299
|
}
|
|
254
300
|
},
|
|
301
|
+
"x-dr-standard": "ArchiMate 3.2 §7.3.2 Value Stream (closest analogue), plus the product-management user journey / user story map",
|
|
302
|
+
"x-dr-evidence": [
|
|
303
|
+
"an end-to-end test spec (Playwright, Cypress, Selenium) named after a user goal, such as 'checkout.e2e.ts', that drives a user across several pages in order",
|
|
304
|
+
"an analytics funnel definition (Amplitude, Mixpanel, GA4 config) listing ordered events from a start event to a goal event",
|
|
305
|
+
"a Gherkin .feature file or docs/user-journeys page describing numbered Given/When/Then steps a named user type takes to accomplish a goal"
|
|
306
|
+
],
|
|
307
|
+
"x-dr-distinguish": {
|
|
308
|
+
"product.workflowstep": "the element is a single action or experience at one position in a journey, not the whole sequence from trigger to goal",
|
|
309
|
+
"product.feature": "the element is a unit of functionality the user can switch on, buy or ship, rather than the ordered path a user takes to reach a goal",
|
|
310
|
+
"product.softwarecapability": "the element names an ability the software has (e.g. 'password recovery') with no ordering of user actions"
|
|
311
|
+
},
|
|
255
312
|
"$id": "urn:dr:spec:node:product.userworkflow"
|
|
313
|
+
},
|
|
314
|
+
"workflowstep": {
|
|
315
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
316
|
+
"title": "WorkflowStep",
|
|
317
|
+
"description": "An ordered, user-facing action within exactly one UserWorkflow, stating what the user does or experiences at that point in the journey and its observable result, described without reference to screens, routes, components or code. Each step names one position in one workflow; the same action in a different workflow is a different step. Use UserWorkflow instead when the element is the whole goal-directed journey made up of several steps, rather than one position within it. Use Feature instead when the element is a reusable unit of user-visible functionality that may be exercised by steps in many workflows, rather than a point in a particular journey. Use SoftwareCapability instead when the element describes an ability the software has regardless of any user sequence, with no ordering or user action attached.",
|
|
318
|
+
"allOf": [
|
|
319
|
+
{
|
|
320
|
+
"$ref": "urn:dr:spec:base:spec-node"
|
|
321
|
+
}
|
|
322
|
+
],
|
|
323
|
+
"properties": {
|
|
324
|
+
"spec_node_id": {
|
|
325
|
+
"const": "product.workflowstep"
|
|
326
|
+
},
|
|
327
|
+
"layer_id": {
|
|
328
|
+
"const": "product"
|
|
329
|
+
},
|
|
330
|
+
"type": {
|
|
331
|
+
"const": "workflowstep"
|
|
332
|
+
},
|
|
333
|
+
"attributes": {
|
|
334
|
+
"type": "object",
|
|
335
|
+
"properties": {
|
|
336
|
+
"documentation": {
|
|
337
|
+
"type": "string",
|
|
338
|
+
"description": "Detailed description of the step"
|
|
339
|
+
},
|
|
340
|
+
"sequence": {
|
|
341
|
+
"type": "integer",
|
|
342
|
+
"minimum": 1,
|
|
343
|
+
"description": "Position of the step within its UserWorkflow (1-based)"
|
|
344
|
+
},
|
|
345
|
+
"action": {
|
|
346
|
+
"type": "string",
|
|
347
|
+
"description": "What the user does or experiences at this step, from the user's point of view (e.g. 'Requests a password reset link')"
|
|
348
|
+
},
|
|
349
|
+
"outcome": {
|
|
350
|
+
"type": "string",
|
|
351
|
+
"description": "Observable result of the step for the user (e.g. 'Receives an email containing a reset link')"
|
|
352
|
+
},
|
|
353
|
+
"optional": {
|
|
354
|
+
"type": "boolean",
|
|
355
|
+
"description": "Whether the workflow can complete without this step",
|
|
356
|
+
"default": false
|
|
357
|
+
},
|
|
358
|
+
"properties": {
|
|
359
|
+
"type": "object",
|
|
360
|
+
"description": "Cross-layer properties"
|
|
361
|
+
}
|
|
362
|
+
},
|
|
363
|
+
"required": ["sequence", "action"],
|
|
364
|
+
"additionalProperties": false
|
|
365
|
+
}
|
|
366
|
+
},
|
|
367
|
+
"x-dr-standard": "No direct ArchiMate 3.2 Strategy element; closest is a sub-process in ArchiMate 3.2 §8.3.1 Business Process decomposition, combined with the user-journey or story-map step of product-management practice",
|
|
368
|
+
"x-dr-evidence": [
|
|
369
|
+
"Numbered 'When'/'Then' lines inside a Gherkin Scenario or acceptance-criteria list that describe a user action and its visible result",
|
|
370
|
+
"test.step('...') or cy.step-style blocks inside an end-to-end test (Playwright, Cypress) named after a user action within a journey test",
|
|
371
|
+
"A user-journey, onboarding or story-map document (or wizard step config array) listing ordered steps with titles like 'Enter email' and 'Confirm code'"
|
|
372
|
+
],
|
|
373
|
+
"x-dr-distinguish": {
|
|
374
|
+
"product.userworkflow": "the element is the whole goal-directed journey made up of several steps, rather than one position within it",
|
|
375
|
+
"product.feature": "the element is a reusable unit of user-visible functionality that may be exercised by steps in many workflows, rather than a point in a particular journey",
|
|
376
|
+
"product.softwarecapability": "the element describes an ability the software has regardless of any user sequence, with no ordering or user action attached"
|
|
377
|
+
},
|
|
378
|
+
"$id": "urn:dr:spec:node:product.workflowstep"
|
|
256
379
|
}
|
|
257
380
|
},
|
|
258
381
|
"relationshipSchemas": {
|
|
259
|
-
"product.
|
|
260
|
-
"id": "product.
|
|
261
|
-
"source_spec_node_id": "product.capability",
|
|
262
|
-
"source_layer": "product",
|
|
263
|
-
"destination_spec_node_id": "product.capability",
|
|
264
|
-
"destination_layer": "product",
|
|
265
|
-
"predicate": "aggregates",
|
|
266
|
-
"cardinality": "many-to-many",
|
|
267
|
-
"strength": "medium",
|
|
268
|
-
"required": false
|
|
269
|
-
},
|
|
270
|
-
"product.capability.fulfills.motivation.requirement": {
|
|
271
|
-
"id": "product.capability.fulfills.motivation.requirement",
|
|
272
|
-
"source_spec_node_id": "product.capability",
|
|
273
|
-
"source_layer": "product",
|
|
274
|
-
"destination_spec_node_id": "motivation.requirement",
|
|
275
|
-
"destination_layer": "motivation",
|
|
276
|
-
"predicate": "fulfills",
|
|
277
|
-
"cardinality": "many-to-many",
|
|
278
|
-
"strength": "medium",
|
|
279
|
-
"required": false
|
|
280
|
-
},
|
|
281
|
-
"product.capability.realizes.business.businessfunction": {
|
|
282
|
-
"id": "product.capability.realizes.business.businessfunction",
|
|
283
|
-
"source_spec_node_id": "product.capability",
|
|
284
|
-
"source_layer": "product",
|
|
285
|
-
"destination_spec_node_id": "business.businessfunction",
|
|
286
|
-
"destination_layer": "business",
|
|
287
|
-
"predicate": "realizes",
|
|
288
|
-
"cardinality": "many-to-many",
|
|
289
|
-
"strength": "medium",
|
|
290
|
-
"required": false
|
|
291
|
-
},
|
|
292
|
-
"product.capability.scheduled-for.product.milestone": {
|
|
293
|
-
"id": "product.capability.scheduled-for.product.milestone",
|
|
294
|
-
"source_spec_node_id": "product.capability",
|
|
295
|
-
"source_layer": "product",
|
|
296
|
-
"destination_spec_node_id": "product.milestone",
|
|
297
|
-
"destination_layer": "product",
|
|
298
|
-
"predicate": "scheduled-for",
|
|
299
|
-
"cardinality": "many-to-many",
|
|
300
|
-
"strength": "medium",
|
|
301
|
-
"required": false
|
|
302
|
-
},
|
|
303
|
-
"product.capability.supports.motivation.goal": {
|
|
304
|
-
"id": "product.capability.supports.motivation.goal",
|
|
305
|
-
"source_spec_node_id": "product.capability",
|
|
306
|
-
"source_layer": "product",
|
|
307
|
-
"destination_spec_node_id": "motivation.goal",
|
|
308
|
-
"destination_layer": "motivation",
|
|
309
|
-
"predicate": "supports",
|
|
310
|
-
"cardinality": "many-to-many",
|
|
311
|
-
"strength": "medium",
|
|
312
|
-
"required": false
|
|
313
|
-
},
|
|
314
|
-
"product.feature.delivers-value.motivation.value": {
|
|
315
|
-
"id": "product.feature.delivers-value.motivation.value",
|
|
382
|
+
"product.feature.delivers.motivation.value": {
|
|
383
|
+
"id": "product.feature.delivers.motivation.value",
|
|
316
384
|
"source_spec_node_id": "product.feature",
|
|
317
385
|
"source_layer": "product",
|
|
318
386
|
"destination_spec_node_id": "motivation.value",
|
|
319
387
|
"destination_layer": "motivation",
|
|
320
|
-
"predicate": "delivers
|
|
388
|
+
"predicate": "delivers",
|
|
321
389
|
"cardinality": "many-to-many",
|
|
322
390
|
"strength": "medium",
|
|
323
|
-
"required": false
|
|
391
|
+
"required": false,
|
|
392
|
+
"description": "Users of the feature gain the value; the value is the reason the feature is worth building."
|
|
324
393
|
},
|
|
325
394
|
"product.feature.depends-on.product.feature": {
|
|
326
395
|
"id": "product.feature.depends-on.product.feature",
|
|
@@ -331,29 +400,20 @@
|
|
|
331
400
|
"predicate": "depends-on",
|
|
332
401
|
"cardinality": "many-to-many",
|
|
333
402
|
"strength": "medium",
|
|
334
|
-
"required": false
|
|
403
|
+
"required": false,
|
|
404
|
+
"description": "The feature cannot work, or cannot ship, without the other feature, such as sharing a document depending on the document being savable."
|
|
335
405
|
},
|
|
336
|
-
"product.feature.realizes.
|
|
337
|
-
"id": "product.feature.realizes.
|
|
406
|
+
"product.feature.realizes.product.softwarecapability": {
|
|
407
|
+
"id": "product.feature.realizes.product.softwarecapability",
|
|
338
408
|
"source_spec_node_id": "product.feature",
|
|
339
409
|
"source_layer": "product",
|
|
340
|
-
"destination_spec_node_id": "
|
|
341
|
-
"destination_layer": "business",
|
|
342
|
-
"predicate": "realizes",
|
|
343
|
-
"cardinality": "many-to-many",
|
|
344
|
-
"strength": "medium",
|
|
345
|
-
"required": false
|
|
346
|
-
},
|
|
347
|
-
"product.feature.realizes.product.capability": {
|
|
348
|
-
"id": "product.feature.realizes.product.capability",
|
|
349
|
-
"source_spec_node_id": "product.feature",
|
|
350
|
-
"source_layer": "product",
|
|
351
|
-
"destination_spec_node_id": "product.capability",
|
|
410
|
+
"destination_spec_node_id": "product.softwarecapability",
|
|
352
411
|
"destination_layer": "product",
|
|
353
412
|
"predicate": "realizes",
|
|
354
413
|
"cardinality": "many-to-many",
|
|
355
414
|
"strength": "medium",
|
|
356
|
-
"required": false
|
|
415
|
+
"required": false,
|
|
416
|
+
"description": "The feature is one concrete, user-visible way the software exercises the capability, such as an export button realizing the ability to save documents to files."
|
|
357
417
|
},
|
|
358
418
|
"product.feature.satisfies.motivation.requirement": {
|
|
359
419
|
"id": "product.feature.satisfies.motivation.requirement",
|
|
@@ -364,7 +424,8 @@
|
|
|
364
424
|
"predicate": "satisfies",
|
|
365
425
|
"cardinality": "many-to-many",
|
|
366
426
|
"strength": "medium",
|
|
367
|
-
"required": false
|
|
427
|
+
"required": false,
|
|
428
|
+
"description": "The feature is how the product meets the requirement, so the requirement is fulfilled once the feature ships."
|
|
368
429
|
},
|
|
369
430
|
"product.feature.scheduled-for.product.milestone": {
|
|
370
431
|
"id": "product.feature.scheduled-for.product.milestone",
|
|
@@ -375,7 +436,8 @@
|
|
|
375
436
|
"predicate": "scheduled-for",
|
|
376
437
|
"cardinality": "many-to-many",
|
|
377
438
|
"strength": "medium",
|
|
378
|
-
"required": false
|
|
439
|
+
"required": false,
|
|
440
|
+
"description": "The feature is planned to ship in the milestone's release, version or roadmap phase."
|
|
379
441
|
},
|
|
380
442
|
"product.feature.serves.product.persona": {
|
|
381
443
|
"id": "product.feature.serves.product.persona",
|
|
@@ -386,7 +448,8 @@
|
|
|
386
448
|
"predicate": "serves",
|
|
387
449
|
"cardinality": "many-to-many",
|
|
388
450
|
"strength": "medium",
|
|
389
|
-
"required": false
|
|
451
|
+
"required": false,
|
|
452
|
+
"description": "The feature is designed for the persona: people like the persona use it to get their work done."
|
|
390
453
|
},
|
|
391
454
|
"product.milestone.precedes.product.milestone": {
|
|
392
455
|
"id": "product.milestone.precedes.product.milestone",
|
|
@@ -397,51 +460,116 @@
|
|
|
397
460
|
"predicate": "precedes",
|
|
398
461
|
"cardinality": "many-to-many",
|
|
399
462
|
"strength": "medium",
|
|
400
|
-
"required": false
|
|
463
|
+
"required": false,
|
|
464
|
+
"description": "The earlier milestone is delivered before the later one, which builds on its scope."
|
|
465
|
+
},
|
|
466
|
+
"product.persona.references.business.businessrole": {
|
|
467
|
+
"id": "product.persona.references.business.businessrole",
|
|
468
|
+
"source_spec_node_id": "product.persona",
|
|
469
|
+
"source_layer": "product",
|
|
470
|
+
"destination_spec_node_id": "business.businessrole",
|
|
471
|
+
"destination_layer": "business",
|
|
472
|
+
"predicate": "references",
|
|
473
|
+
"cardinality": "many-to-many",
|
|
474
|
+
"strength": "medium",
|
|
475
|
+
"required": false,
|
|
476
|
+
"description": "The persona describes a kind of person who holds the business role; it points to the role rather than performing or serving it."
|
|
401
477
|
},
|
|
402
|
-
"product.persona.
|
|
403
|
-
"id": "product.persona.
|
|
478
|
+
"product.persona.references.motivation.stakeholder": {
|
|
479
|
+
"id": "product.persona.references.motivation.stakeholder",
|
|
404
480
|
"source_spec_node_id": "product.persona",
|
|
405
481
|
"source_layer": "product",
|
|
406
482
|
"destination_spec_node_id": "motivation.stakeholder",
|
|
407
483
|
"destination_layer": "motivation",
|
|
408
|
-
"predicate": "
|
|
484
|
+
"predicate": "references",
|
|
409
485
|
"cardinality": "many-to-many",
|
|
410
486
|
"strength": "medium",
|
|
411
|
-
"required": false
|
|
487
|
+
"required": false,
|
|
488
|
+
"description": "The persona is a design archetype for a group the stakeholder represents; it points to the stakeholder whose concerns its users share."
|
|
412
489
|
},
|
|
413
|
-
"product.
|
|
414
|
-
"id": "product.
|
|
415
|
-
"source_spec_node_id": "product.
|
|
490
|
+
"product.softwarecapability.aggregates.product.softwarecapability": {
|
|
491
|
+
"id": "product.softwarecapability.aggregates.product.softwarecapability",
|
|
492
|
+
"source_spec_node_id": "product.softwarecapability",
|
|
416
493
|
"source_layer": "product",
|
|
417
|
-
"destination_spec_node_id": "
|
|
418
|
-
"destination_layer": "
|
|
419
|
-
"predicate": "
|
|
494
|
+
"destination_spec_node_id": "product.softwarecapability",
|
|
495
|
+
"destination_layer": "product",
|
|
496
|
+
"predicate": "aggregates",
|
|
420
497
|
"cardinality": "many-to-many",
|
|
421
498
|
"strength": "medium",
|
|
422
|
-
"required": false
|
|
499
|
+
"required": false,
|
|
500
|
+
"description": "The narrower software capability is part of the wider one in the platform's capability map; it keeps its own identity and may be grouped under more than one parent."
|
|
423
501
|
},
|
|
424
|
-
"product.
|
|
425
|
-
"id": "product.
|
|
426
|
-
"source_spec_node_id": "product.
|
|
502
|
+
"product.softwarecapability.depends-on.product.softwarecapability": {
|
|
503
|
+
"id": "product.softwarecapability.depends-on.product.softwarecapability",
|
|
504
|
+
"source_spec_node_id": "product.softwarecapability",
|
|
427
505
|
"source_layer": "product",
|
|
428
|
-
"destination_spec_node_id": "
|
|
506
|
+
"destination_spec_node_id": "product.softwarecapability",
|
|
507
|
+
"destination_layer": "product",
|
|
508
|
+
"predicate": "depends-on",
|
|
509
|
+
"cardinality": "many-to-many",
|
|
510
|
+
"strength": "medium",
|
|
511
|
+
"required": false,
|
|
512
|
+
"description": "The software capability needs the other capability of the platform to work, such as full-text search depending on document indexing."
|
|
513
|
+
},
|
|
514
|
+
"product.softwarecapability.realizes.business.businessfunction": {
|
|
515
|
+
"id": "product.softwarecapability.realizes.business.businessfunction",
|
|
516
|
+
"source_spec_node_id": "product.softwarecapability",
|
|
517
|
+
"source_layer": "product",
|
|
518
|
+
"destination_spec_node_id": "business.businessfunction",
|
|
429
519
|
"destination_layer": "business",
|
|
430
|
-
"predicate": "
|
|
520
|
+
"predicate": "realizes",
|
|
521
|
+
"cardinality": "many-to-many",
|
|
522
|
+
"strength": "medium",
|
|
523
|
+
"required": false,
|
|
524
|
+
"description": "The software capability is how the platform carries out the business function, such as saving documents to files realizing the business function of sharing data. This is the product layer's main link to the business layer."
|
|
525
|
+
},
|
|
526
|
+
"product.softwarecapability.satisfies.motivation.requirement": {
|
|
527
|
+
"id": "product.softwarecapability.satisfies.motivation.requirement",
|
|
528
|
+
"source_spec_node_id": "product.softwarecapability",
|
|
529
|
+
"source_layer": "product",
|
|
530
|
+
"destination_spec_node_id": "motivation.requirement",
|
|
531
|
+
"destination_layer": "motivation",
|
|
532
|
+
"predicate": "satisfies",
|
|
533
|
+
"cardinality": "many-to-many",
|
|
534
|
+
"strength": "medium",
|
|
535
|
+
"required": false,
|
|
536
|
+
"description": "The software capability is how the platform meets the requirement."
|
|
537
|
+
},
|
|
538
|
+
"product.softwarecapability.scheduled-for.product.milestone": {
|
|
539
|
+
"id": "product.softwarecapability.scheduled-for.product.milestone",
|
|
540
|
+
"source_spec_node_id": "product.softwarecapability",
|
|
541
|
+
"source_layer": "product",
|
|
542
|
+
"destination_spec_node_id": "product.milestone",
|
|
543
|
+
"destination_layer": "product",
|
|
544
|
+
"predicate": "scheduled-for",
|
|
545
|
+
"cardinality": "many-to-many",
|
|
546
|
+
"strength": "medium",
|
|
547
|
+
"required": false,
|
|
548
|
+
"description": "The software capability is planned to be in place by the milestone."
|
|
549
|
+
},
|
|
550
|
+
"product.softwarecapability.supports.motivation.goal": {
|
|
551
|
+
"id": "product.softwarecapability.supports.motivation.goal",
|
|
552
|
+
"source_spec_node_id": "product.softwarecapability",
|
|
553
|
+
"source_layer": "product",
|
|
554
|
+
"destination_spec_node_id": "motivation.goal",
|
|
555
|
+
"destination_layer": "motivation",
|
|
556
|
+
"predicate": "supports",
|
|
431
557
|
"cardinality": "many-to-many",
|
|
432
558
|
"strength": "medium",
|
|
433
|
-
"required": false
|
|
559
|
+
"required": false,
|
|
560
|
+
"description": "Having the software capability helps the organization reach the goal."
|
|
434
561
|
},
|
|
435
|
-
"product.userworkflow.composes.product.
|
|
436
|
-
"id": "product.userworkflow.composes.product.
|
|
562
|
+
"product.userworkflow.composes.product.workflowstep": {
|
|
563
|
+
"id": "product.userworkflow.composes.product.workflowstep",
|
|
437
564
|
"source_spec_node_id": "product.userworkflow",
|
|
438
565
|
"source_layer": "product",
|
|
439
|
-
"destination_spec_node_id": "product.
|
|
566
|
+
"destination_spec_node_id": "product.workflowstep",
|
|
440
567
|
"destination_layer": "product",
|
|
441
568
|
"predicate": "composes",
|
|
442
569
|
"cardinality": "many-to-many",
|
|
443
|
-
"strength": "
|
|
444
|
-
"required": false
|
|
570
|
+
"strength": "high",
|
|
571
|
+
"required": false,
|
|
572
|
+
"description": "The step is one position in the workflow's ordered journey and exists only as part of it."
|
|
445
573
|
},
|
|
446
574
|
"product.userworkflow.delivers.motivation.outcome": {
|
|
447
575
|
"id": "product.userworkflow.delivers.motivation.outcome",
|
|
@@ -452,7 +580,20 @@
|
|
|
452
580
|
"predicate": "delivers",
|
|
453
581
|
"cardinality": "many-to-many",
|
|
454
582
|
"strength": "medium",
|
|
455
|
-
"required": false
|
|
583
|
+
"required": false,
|
|
584
|
+
"description": "Completing the journey produces the outcome the user or organization wants."
|
|
585
|
+
},
|
|
586
|
+
"product.userworkflow.realizes.business.businessprocess": {
|
|
587
|
+
"id": "product.userworkflow.realizes.business.businessprocess",
|
|
588
|
+
"source_spec_node_id": "product.userworkflow",
|
|
589
|
+
"source_layer": "product",
|
|
590
|
+
"destination_spec_node_id": "business.businessprocess",
|
|
591
|
+
"destination_layer": "business",
|
|
592
|
+
"predicate": "realizes",
|
|
593
|
+
"cardinality": "many-to-many",
|
|
594
|
+
"strength": "medium",
|
|
595
|
+
"required": false,
|
|
596
|
+
"description": "The workflow is the user's way of carrying out the business process through the product, so following the journey performs the process or its user-facing part."
|
|
456
597
|
},
|
|
457
598
|
"product.userworkflow.serves.product.persona": {
|
|
458
599
|
"id": "product.userworkflow.serves.product.persona",
|
|
@@ -463,7 +604,32 @@
|
|
|
463
604
|
"predicate": "serves",
|
|
464
605
|
"cardinality": "many-to-many",
|
|
465
606
|
"strength": "medium",
|
|
466
|
-
"required": false
|
|
607
|
+
"required": false,
|
|
608
|
+
"description": "The workflow is designed for the persona: it is the journey people like the persona follow to reach their goal."
|
|
609
|
+
},
|
|
610
|
+
"product.workflowstep.flows-to.product.workflowstep": {
|
|
611
|
+
"id": "product.workflowstep.flows-to.product.workflowstep",
|
|
612
|
+
"source_spec_node_id": "product.workflowstep",
|
|
613
|
+
"source_layer": "product",
|
|
614
|
+
"destination_spec_node_id": "product.workflowstep",
|
|
615
|
+
"destination_layer": "product",
|
|
616
|
+
"predicate": "flows-to",
|
|
617
|
+
"cardinality": "many-to-many",
|
|
618
|
+
"strength": "medium",
|
|
619
|
+
"required": false,
|
|
620
|
+
"description": "When the user finishes the step, the journey continues with the next step."
|
|
621
|
+
},
|
|
622
|
+
"product.workflowstep.uses.product.feature": {
|
|
623
|
+
"id": "product.workflowstep.uses.product.feature",
|
|
624
|
+
"source_spec_node_id": "product.workflowstep",
|
|
625
|
+
"source_layer": "product",
|
|
626
|
+
"destination_spec_node_id": "product.feature",
|
|
627
|
+
"destination_layer": "product",
|
|
628
|
+
"predicate": "uses",
|
|
629
|
+
"cardinality": "many-to-many",
|
|
630
|
+
"strength": "medium",
|
|
631
|
+
"required": false,
|
|
632
|
+
"description": "At this step the user exercises the feature; a workflow reaches features, and through them software capabilities, only through its steps."
|
|
467
633
|
}
|
|
468
634
|
}
|
|
469
635
|
}
|