@memoarchitect/ontology 0.8.22 → 0.10.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (240) hide show
  1. package/README.md +1 -1
  2. package/examples/connected-patient-monitor/memo.package.yaml +3 -0
  3. package/examples/connected-patient-monitor/model/catalog/connected_patient_monitor.sysml +9 -7
  4. package/examples/connected-patient-monitor/model/catalog/project.sysml +3 -1
  5. package/examples/connected-patient-monitor/model/catalog/viewpoints/unassigned/views/connected_patient_monitor_overview.sysml +1 -1
  6. package/examples/embedded-infusion-pump/memo.package.yaml +3 -0
  7. package/examples/embedded-infusion-pump/model/catalog/embedded_infusion_pump.sysml +11 -9
  8. package/examples/embedded-infusion-pump/model/catalog/project.sysml +3 -1
  9. package/examples/embedded-infusion-pump/model/catalog/viewpoints/unassigned/views/embedded_infusion_pump_overview.sysml +1 -1
  10. package/examples/functional-logical-physical/memo.package.yaml +3 -0
  11. package/examples/functional-logical-physical/model/catalog/functional_logical_physical.sysml +9 -7
  12. package/examples/functional-logical-physical/model/catalog/project.sysml +3 -1
  13. package/examples/functional-logical-physical/model/catalog/viewpoints/unassigned/views/functional_logical_physical_overview.sysml +1 -1
  14. package/examples/gpca-pump/memo.identity.yaml +2179 -0
  15. package/examples/gpca-pump/memo.package.yaml +3 -0
  16. package/examples/gpca-pump/methodology/gpca_profiles.sysml +3 -1
  17. package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +29 -27
  18. package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +115 -114
  19. package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +42 -41
  20. package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +26 -25
  21. package/examples/gpca-pump/model/catalog/gpca_context.sysml +27 -23
  22. package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +15 -15
  23. package/examples/gpca-pump/model/catalog/gpca_formal_behavior.sysml +42 -40
  24. package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +198 -197
  25. package/examples/gpca-pump/model/catalog/gpca_operational.sysml +146 -180
  26. package/examples/gpca-pump/model/catalog/gpca_physical.sysml +8 -6
  27. package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +290 -288
  28. package/examples/gpca-pump/model/catalog/gpca_risk.sysml +164 -163
  29. package/examples/gpca-pump/model/catalog/gpca_standards.sysml +44 -43
  30. package/examples/gpca-pump/model/catalog/gpca_system.sysml +21 -33
  31. package/examples/gpca-pump/model/catalog/gpca_trace.sysml +10 -11
  32. package/examples/gpca-pump/model/catalog/gpca_verification.sysml +62 -61
  33. package/examples/gpca-pump/model/catalog/project.sysml +3 -1
  34. package/examples/gpca-pump/model/catalog/viewpoints/context/views/context_system_context_view.sysml +7 -7
  35. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/cybersecurity_cybersecurity_view.sysml +7 -7
  36. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_cyber_assessment_view.sysml +6 -7
  37. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_threat_model_view.sysml +7 -8
  38. package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_allocation_view.sysml +6 -6
  39. package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_browser_view.sysml +6 -6
  40. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/behavior_action_flow_view.sysml +6 -6
  41. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/document_architecture_description_view.sysml +8 -9
  42. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_device_interconnect_view.sysml +6 -6
  43. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_logical_architecture_view.sysml +6 -6
  44. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_mode_state_view.sysml +6 -6
  45. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_system_decomposition_view.sysml +6 -6
  46. package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_scenario_sequence_view.sysml +7 -7
  47. package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_use_case_view.sysml +6 -6
  48. package/examples/gpca-pump/model/catalog/viewpoints/physical/views/physical_physical_bom_view.sysml +6 -6
  49. package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/document_dhf_index_view.sysml +8 -9
  50. package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/requirements_requirements_trace_view.sysml +6 -6
  51. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_hazard_analysis_view.sysml +6 -7
  52. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_rmf_view.sysml +6 -7
  53. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_fmea_view.sysml +6 -6
  54. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_risk_chain_view.sysml +6 -6
  55. package/examples/gpca-pump/model/catalog/viewpoints/software/views/document_sdd_view.sysml +6 -7
  56. package/examples/gpca-pump/model/catalog/viewpoints/software/views/software_software_architecture_view.sysml +6 -6
  57. package/examples/gpca-pump/model/catalog/viewpoints/usability/views/document_usability_view.sysml +8 -9
  58. package/examples/gpca-pump/model/catalog/viewpoints/verification/views/document_vv_view.sysml +6 -7
  59. package/examples/gpca-pump/model/catalog/viewpoints/verification/views/verification_verification_coverage_view.sysml +6 -6
  60. package/examples/ivd-laboratory-system/memo.package.yaml +3 -0
  61. package/examples/ivd-laboratory-system/model/catalog/ivd_laboratory_system.sysml +10 -8
  62. package/examples/ivd-laboratory-system/model/catalog/project.sysml +3 -1
  63. package/examples/ivd-laboratory-system/model/catalog/viewpoints/unassigned/views/ivd_laboratory_system_overview.sysml +1 -1
  64. package/examples/manual-surgical-instrument/memo.package.yaml +3 -0
  65. package/examples/manual-surgical-instrument/model/catalog/manual_surgical_instrument.sysml +7 -5
  66. package/examples/manual-surgical-instrument/model/catalog/project.sysml +3 -1
  67. package/examples/manual-surgical-instrument/model/catalog/viewpoints/unassigned/views/manual_surgical_instrument_overview.sysml +1 -1
  68. package/examples/multidimensional-layers/memo.package.yaml +3 -0
  69. package/examples/multidimensional-layers/model/catalog/multidimensional_layers.sysml +6 -4
  70. package/examples/multidimensional-layers/model/catalog/project.sysml +3 -1
  71. package/examples/multidimensional-layers/model/catalog/viewpoints/unassigned/views/multidimensional_layers_overview.sysml +0 -1
  72. package/examples/nested-architecture-dsm/memo.package.yaml +3 -0
  73. package/examples/nested-architecture-dsm/model/catalog/architecture/functional/functions.sysml +20 -18
  74. package/examples/nested-architecture-dsm/model/catalog/architecture/logical/structure.sysml +20 -18
  75. package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/needs.sysml +6 -4
  76. package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/requirements.sysml +9 -7
  77. package/examples/nested-architecture-dsm/model/catalog/assurance/verification_validation/verification_validation.sysml +18 -16
  78. package/examples/nested-architecture-dsm/model/catalog/project.sysml +3 -1
  79. package/examples/reusable-instrument/memo.package.yaml +3 -0
  80. package/examples/reusable-instrument/model/catalog/project.sysml +3 -1
  81. package/examples/reusable-instrument/model/catalog/reusable_instrument.sysml +23 -31
  82. package/examples/reusable-instrument/model/catalog/viewpoints/unassigned/views/reusable_instrument_overview.sysml +0 -1
  83. package/examples/ros-mobile-robot/memo.package.yaml +3 -0
  84. package/examples/ros-mobile-robot/model/catalog/project.sysml +3 -1
  85. package/examples/ros-mobile-robot/model/catalog/ros_mobile_robot.sysml +18 -16
  86. package/examples/ros-mobile-robot/model/catalog/viewpoints/unassigned/views/ros_mobile_robot_overview.sysml +0 -1
  87. package/examples/software-only-medical-device/memo.package.yaml +3 -0
  88. package/examples/software-only-medical-device/model/catalog/project.sysml +3 -1
  89. package/examples/software-only-medical-device/model/catalog/software_only_medical_device.sysml +11 -9
  90. package/examples/software-only-medical-device/model/catalog/viewpoints/unassigned/views/software_only_medical_device_overview.sysml +0 -1
  91. package/examples/surgical-closure-workflow/memo.package.yaml +3 -0
  92. package/examples/surgical-closure-workflow/model/catalog/project.sysml +3 -1
  93. package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +56 -69
  94. package/examples/surgical-closure-workflow/model/catalog/viewpoints/unassigned/views/surgical_closure_workflow_overview.sysml +0 -1
  95. package/examples/surgical-robot/memo.package.yaml +3 -0
  96. package/examples/surgical-robot/model/catalog/project.sysml +3 -1
  97. package/examples/surgical-robot/model/catalog/surgical_robot.sysml +9 -7
  98. package/examples/surgical-robot/model/catalog/viewpoints/unassigned/views/surgical_robot_overview.sysml +0 -1
  99. package/examples/sysml-diagram-samples/memo.package.yaml +2 -0
  100. package/examples/sysml-diagram-samples/model/catalog/project.sysml +3 -1
  101. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/action_flow_view.sysml +12 -11
  102. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.sysml +8 -7
  103. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/functional_flow_view.sysml +4 -3
  104. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.sysml +3 -3
  105. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.sysml +17 -16
  106. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/requirements_view.sysml +9 -8
  107. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/standard_activity_view.sysml +4 -3
  108. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/state_transition_view.sysml +3 -3
  109. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/tree_view.sysml +4 -3
  110. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/use_case_view.sysml +12 -9
  111. package/examples/temperature-alarm/memo.identity.yaml +64 -0
  112. package/examples/temperature-alarm/memo.package.yaml +3 -0
  113. package/examples/temperature-alarm/model/catalog/project.sysml +3 -1
  114. package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +30 -29
  115. package/examples/temperature-alarm/model/catalog/viewpoints/unassigned/views/temperature_alarm_overview.sysml +0 -1
  116. package/examples/ui-screen-regions/memo.package.yaml +3 -0
  117. package/examples/ui-screen-regions/model/catalog/architecture/functional/functions.sysml +14 -12
  118. package/examples/ui-screen-regions/model/catalog/architecture/implementation/ui.sysml +35 -33
  119. package/examples/ui-screen-regions/model/catalog/artifacts/assets/catalog.sysml +8 -6
  120. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/comments.sysml +14 -13
  121. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/notes.sysml +4 -2
  122. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/rationales.sysml +4 -2
  123. package/examples/ui-screen-regions/model/catalog/assurance/human_factors/human_factors.sysml +12 -10
  124. package/examples/ui-screen-regions/model/catalog/assurance/requirements/needs.sysml +3 -1
  125. package/examples/ui-screen-regions/model/catalog/assurance/requirements/requirements.sysml +14 -12
  126. package/examples/ui-screen-regions/model/catalog/assurance/safety_risk/risk.sysml +17 -15
  127. package/examples/ui-screen-regions/model/catalog/assurance/verification_validation/verification_validation.sysml +10 -9
  128. package/examples/ui-screen-regions/model/catalog/project.sysml +3 -1
  129. package/examples/ui-screen-regions/model/catalog/relationships.sysml +2 -2
  130. package/examples/ui-screen-regions/model/catalog/traces.sysml +0 -2
  131. package/examples/ui-screen-regions/model/catalog/viewpoints/functional/views/ui_functional_tree.sysml +6 -5
  132. package/examples/ui-screen-regions/model/catalog/viewpoints/requirements/views/ui_requirements_trace.sysml +6 -5
  133. package/examples/ui-screen-regions/model/catalog/viewpoints/risk/views/ui_risk_chain.sysml +6 -5
  134. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/main_screen_layout.sysml +4 -3
  135. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/settings_screen_layout.sysml +4 -3
  136. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/ui_region_trace.sysml +4 -3
  137. package/extensions/aadl/memo.package.yaml +1 -1
  138. package/extensions/aadl/src/correspondence/memo_aadl_correspondence.sysml +23 -21
  139. package/extensions/aadl/src/methodology/aadl_methodology.sysml +3 -1
  140. package/extensions/clinical/src/methodology/clinical_methodology.sysml +3 -1
  141. package/extensions/cloud/memo.package.yaml +1 -1
  142. package/extensions/cloud/src/methodology/cloud_methodology.sysml +3 -1
  143. package/extensions/container/memo.package.yaml +1 -1
  144. package/extensions/container/src/container_extension.sysml +2 -2
  145. package/extensions/container/src/methodology/container_methodology.sysml +3 -1
  146. package/extensions/messaging/memo.package.yaml +1 -1
  147. package/extensions/messaging/src/methodology/messaging_methodology.sysml +3 -1
  148. package/extensions/ros/memo.package.yaml +1 -1
  149. package/extensions/ros/src/methodology/ros_methodology.sysml +3 -1
  150. package/extensions/template/src/extension.sysml +3 -1
  151. package/methodologies/default/memo.package.yaml +1 -1
  152. package/methodologies/gpca/memo.package.yaml +1 -1
  153. package/ontology/memo.package.yaml +1 -1
  154. package/package.json +2 -2
  155. package/profile/memo.package.yaml +1 -1
  156. package/src/architecture/functional/behavior/memo_behavior.sysml +5 -5
  157. package/src/architecture/functional/functions/memo_functions.sysml +6 -6
  158. package/src/architecture/implementation/hardware/common/memo_hardware_common.sysml +12 -2
  159. package/src/architecture/implementation/software/runtime/memo_software_runtime.sysml +0 -11
  160. package/src/architecture/implementation/software/structure/memo_software_structure.sysml +7 -7
  161. package/src/architecture/implementation/ui/memo_ui.sysml +8 -31
  162. package/src/architecture/logical/interfaces/memo_interfaces.sysml +4 -2
  163. package/src/architecture/logical/structure/memo_logical_structure.sysml +5 -5
  164. package/src/architecture/operational/activities/memo_activities.sysml +19 -28
  165. package/src/architecture/operational/context/actors/memo_actors.sysml +5 -4
  166. package/src/architecture/operational/context/stakeholders/memo_stakeholders.sysml +7 -7
  167. package/src/architecture/operational/context/use_context/memo_use_context.sysml +5 -14
  168. package/src/architecture/operational/scenarios/memo_scenarios.sysml +12 -104
  169. package/src/architecture/operational/structure/memo_operational.sysml +42 -13
  170. package/src/architecture/operational/use_cases/memo_use_cases.sysml +7 -12
  171. package/src/architecture/operational/workflows/memo_workflows.sysml +20 -42
  172. package/src/architecture/realization/deployment/memo_deployment.sysml +26 -19
  173. package/src/architecture/realization/physical/memo_physical_architecture.sysml +8 -2
  174. package/src/artifacts/standards/cfr_21_820.sysml +80 -89
  175. package/src/artifacts/standards/fda_cybersecurity_2023.sysml +45 -49
  176. package/src/artifacts/standards/iec_60601_1.sysml +108 -121
  177. package/src/artifacts/standards/iec_60601_1_2.sysml +31 -33
  178. package/src/artifacts/standards/iec_60812.sysml +21 -22
  179. package/src/artifacts/standards/iec_62304.sysml +150 -169
  180. package/src/artifacts/standards/iec_62366_1.sysml +80 -89
  181. package/src/artifacts/standards/iec_81001_5_1.sysml +52 -57
  182. package/src/artifacts/standards/iso_13485.sysml +80 -89
  183. package/src/artifacts/standards/iso_14971.sysml +66 -73
  184. package/src/artifacts/standards/iso_iec_ieee_42010.sysml +15 -15
  185. package/src/artifacts/templates/dhf/system/sad.md +3 -3
  186. package/src/assurance/cybersecurity/memo_cybersecurity.sysml +2 -2
  187. package/src/assurance/human_factors/memo_human_factors.sysml +2 -2
  188. package/src/assurance/requirements/memo_requirements.sysml +2 -18
  189. package/src/assurance/safety_risk/analysis/memo_fmea.sysml +1 -1
  190. package/src/assurance/safety_risk/memo_risk.sysml +12 -0
  191. package/src/assurance/verification_validation/memo_assurance.sysml +7 -12
  192. package/src/core/common/memo_common.sysml +59 -55
  193. package/src/core/enumerations/memo_enumerations.sysml +1 -1
  194. package/src/core/relationships/memo_relationships.sysml +29 -56
  195. package/src/methodology/archetypes/memo_archetypes.sysml +10 -8
  196. package/src/methodology/core/memo_core.sysml +0 -10
  197. package/src/methodology/profiles/memo_profiles.sysml +18 -16
  198. package/src/methodology/workflow/memo_workflow.sysml +5 -5
  199. package/src/rules/closure/closure_rules.sysml +22 -20
  200. package/src/rules/crosslayer/cross_layer_rules.sysml +4 -2
  201. package/src/rules/ontology/ontology_invariants.sysml +121 -48
  202. package/src/rules/quantitative/quantitative_rules.sysml +4 -2
  203. package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +58 -57
  204. package/src/viewpoints/clinical/clinical_viewpoint.sysml +5 -4
  205. package/src/viewpoints/context/context_viewpoint.sysml +6 -5
  206. package/src/viewpoints/context/views/system_context_view/system_context_view.sysml +6 -5
  207. package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +6 -6
  208. package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +36 -4
  209. package/src/viewpoints/functional/functional_viewpoint.sysml +6 -5
  210. package/src/viewpoints/functional/views/function_allocation_view/function_allocation_view.sysml +6 -5
  211. package/src/viewpoints/functional/views/system_functional_tree_view/system_functional_tree_view.sysml +6 -5
  212. package/src/viewpoints/logical/logical_viewpoint.sysml +5 -4
  213. package/src/viewpoints/logical/views/logical_architecture_view/logical_architecture_view.sysml +6 -5
  214. package/src/viewpoints/operational/operational_viewpoint.sysml +6 -5
  215. package/src/viewpoints/operational/views/use_case_view/use_case_view.sysml +7 -6
  216. package/src/viewpoints/physical/physical_viewpoint.sysml +5 -4
  217. package/src/viewpoints/physical/views/network_topology_view/network_topology_view.sysml +6 -5
  218. package/src/viewpoints/physical/views/physical_bom_view/physical_bom_view.sysml +6 -5
  219. package/src/viewpoints/rendering/memo_rendering.sysml +220 -40
  220. package/src/viewpoints/requirements/requirements_viewpoint.sysml +5 -4
  221. package/src/viewpoints/requirements/views/requirements_traceability_view/requirements_traceability_view.sysml +6 -5
  222. package/src/viewpoints/risk/risk_viewpoint.sysml +5 -4
  223. package/src/viewpoints/risk/views/risk_chain_view/risk_chain_view.sysml +6 -5
  224. package/src/viewpoints/software/software_viewpoint.sysml +5 -4
  225. package/src/viewpoints/software/views/software_architecture_view/software_architecture_view.sysml +6 -5
  226. package/src/viewpoints/ui_layout/ui_layout_viewpoint.sysml +5 -4
  227. package/src/viewpoints/ui_layout/views/screen_layout_view/screen_layout_view.sysml +3 -1
  228. package/src/viewpoints/usability/usability_viewpoint.sysml +5 -4
  229. package/src/viewpoints/verification/verification_viewpoint.sysml +5 -4
  230. package/src/viewpoints/verification/views/verification_coverage_view/verification_coverage_view.sysml +6 -5
  231. package/templates/connected-device/memo.package.yaml +2 -0
  232. package/templates/connected-device/model/catalog/project.sysml +3 -1
  233. package/templates/default/memo.package.yaml +2 -0
  234. package/templates/default/model/catalog/project.sysml +3 -1
  235. package/templates/infusion-pump/memo.package.yaml +2 -0
  236. package/templates/infusion-pump/model/catalog/project.sysml +3 -1
  237. package/templates/monitoring-device/memo.package.yaml +2 -0
  238. package/templates/monitoring-device/model/catalog/project.sysml +3 -1
  239. package/templates/samd/memo.package.yaml +2 -0
  240. package/templates/samd/model/catalog/project.sysml +3 -1
@@ -29,12 +29,13 @@ package memo_examples_gpca_pump_gpca_standards {
29
29
  private import memo_examples_gpca_pump_gpca_physical::*;
30
30
  private import memo_examples_gpca_pump_gpca_risk::*;
31
31
 
32
+ private import memo_core_common::MemoIdentity;
32
33
  // ── The controlled documents clause evidence lands in ────────────────
33
34
  // TracesToDocument targets ControlledArtifact, so the DHF documents are
34
35
  // modelled as the artifacts they are rather than as a second document type.
35
36
 
36
37
  part docSrs : MarkdownDocumentSource {
37
- attribute :>> id = "DOC-SRS";
38
+ @MemoIdentity { :>> providedId = "DOC-SRS"; }
38
39
  attribute :>> name = "SoftwareRequirementsSpecification";
39
40
  attribute :>> version = "1.0";
40
41
  attribute :>> artifactKind = ArtifactKind::requirementSpecification;
@@ -46,7 +47,7 @@ package memo_examples_gpca_pump_gpca_standards {
46
47
  attribute :>> generated = true;
47
48
  }
48
49
  part docSad : MarkdownDocumentSource {
49
- attribute :>> id = "DOC-SAD";
50
+ @MemoIdentity { :>> providedId = "DOC-SAD"; }
50
51
  attribute :>> name = "SoftwareArchitectureDescription";
51
52
  attribute :>> version = "1.0";
52
53
  attribute :>> artifactKind = ArtifactKind::architectureDescription;
@@ -58,7 +59,7 @@ package memo_examples_gpca_pump_gpca_standards {
58
59
  attribute :>> generated = true;
59
60
  }
60
61
  part docHrs : MarkdownDocumentSource {
61
- attribute :>> id = "DOC-HRS";
62
+ @MemoIdentity { :>> providedId = "DOC-HRS"; }
62
63
  attribute :>> name = "HardwareRequirementsSpecification";
63
64
  attribute :>> version = "1.0";
64
65
  attribute :>> artifactKind = ArtifactKind::requirementSpecification;
@@ -70,7 +71,7 @@ package memo_examples_gpca_pump_gpca_standards {
70
71
  attribute :>> generated = true;
71
72
  }
72
73
  part docRmf : MarkdownDocumentSource {
73
- attribute :>> id = "DOC-RMF";
74
+ @MemoIdentity { :>> providedId = "DOC-RMF"; }
74
75
  attribute :>> name = "RiskManagementFile";
75
76
  attribute :>> version = "1.0";
76
77
  attribute :>> artifactKind = ArtifactKind::riskRecord;
@@ -84,78 +85,78 @@ package memo_examples_gpca_pump_gpca_standards {
84
85
 
85
86
  // ── IEC 62304 — software lifecycle ───────────────────────────────────
86
87
  // §5.2.2 software requirements content: every software requirement.
87
- connection : ConformsTo connect conformingElement ::> reqOcclusion to clause ::> iec62304Clause5_2_2;
88
- connection : ConformsTo connect conformingElement ::> reqDoorOpen to clause ::> iec62304Clause5_2_2;
89
- connection : ConformsTo connect conformingElement ::> reqMaxHourlyDose to clause ::> iec62304Clause5_2_2;
90
- connection : ConformsTo connect conformingElement ::> reqEventLogging to clause ::> iec62304Clause5_2_2;
91
- connection : ConformsTo connect conformingElement ::> reqWatchdogSafeState to clause ::> iec62304Clause5_2_2;
92
- connection : ConformsTo connect conformingElement ::> reqStuckButton to clause ::> iec62304Clause5_2_2;
93
- connection : ConformsTo connect conformingElement ::> reqFlowCrossCheck to clause ::> iec62304Clause5_2_2;
88
+ connection : ConformsTo connect conformingElement ::> reqOcclusion to clause ::> iec62304::iec62304Clause5::iec62304Clause5_2::iec62304Clause5_2_2;
89
+ connection : ConformsTo connect conformingElement ::> reqDoorOpen to clause ::> iec62304::iec62304Clause5::iec62304Clause5_2::iec62304Clause5_2_2;
90
+ connection : ConformsTo connect conformingElement ::> reqMaxHourlyDose to clause ::> iec62304::iec62304Clause5::iec62304Clause5_2::iec62304Clause5_2_2;
91
+ connection : ConformsTo connect conformingElement ::> reqEventLogging to clause ::> iec62304::iec62304Clause5::iec62304Clause5_2::iec62304Clause5_2_2;
92
+ connection : ConformsTo connect conformingElement ::> reqWatchdogSafeState to clause ::> iec62304::iec62304Clause5::iec62304Clause5_2::iec62304Clause5_2_2;
93
+ connection : ConformsTo connect conformingElement ::> reqStuckButton to clause ::> iec62304::iec62304Clause5::iec62304Clause5_2::iec62304Clause5_2_2;
94
+ connection : ConformsTo connect conformingElement ::> reqFlowCrossCheck to clause ::> iec62304::iec62304Clause5::iec62304Clause5_2::iec62304Clause5_2_2;
94
95
 
95
96
  // §5.2.3 risk control measures carried into software requirements.
96
- connection : ConformsTo connect conformingElement ::> reqWatchdogSafeState to clause ::> iec62304Clause5_2_3;
97
- connection : ConformsTo connect conformingElement ::> reqFlowCrossCheck to clause ::> iec62304Clause5_2_3;
97
+ connection : ConformsTo connect conformingElement ::> reqWatchdogSafeState to clause ::> iec62304::iec62304Clause5::iec62304Clause5_2::iec62304Clause5_2_3;
98
+ connection : ConformsTo connect conformingElement ::> reqFlowCrossCheck to clause ::> iec62304::iec62304Clause5::iec62304Clause5_2::iec62304Clause5_2_3;
98
99
 
99
100
  // §5.3 software architectural design: the software decomposition.
100
- connection : ConformsTo connect conformingElement ::> gpcaDevice.gpcaSoftware to clause ::> iec62304Clause5_3;
101
- connection : ConformsTo connect conformingElement ::> gpcaDevice.gpcaSoftware.tlm to clause ::> iec62304Clause5_3;
102
- connection : ConformsTo connect conformingElement ::> gpcaDevice.gpcaSoftware.infusionMgr to clause ::> iec62304Clause5_3;
103
- connection : ConformsTo connect conformingElement ::> gpcaDevice.gpcaSoftware.systemMonitor to clause ::> iec62304Clause5_3;
104
- connection : ConformsTo connect conformingElement ::> gpcaDevice.gpcaSoftware.config to clause ::> iec62304Clause5_3;
101
+ connection : ConformsTo connect conformingElement ::> gpcaDevice.gpcaSoftware to clause ::> iec62304::iec62304Clause5::iec62304Clause5_3;
102
+ connection : ConformsTo connect conformingElement ::> gpcaDevice.gpcaSoftware.tlm to clause ::> iec62304::iec62304Clause5::iec62304Clause5_3;
103
+ connection : ConformsTo connect conformingElement ::> gpcaDevice.gpcaSoftware.infusionMgr to clause ::> iec62304::iec62304Clause5::iec62304Clause5_3;
104
+ connection : ConformsTo connect conformingElement ::> gpcaDevice.gpcaSoftware.systemMonitor to clause ::> iec62304::iec62304Clause5::iec62304Clause5_3;
105
+ connection : ConformsTo connect conformingElement ::> gpcaDevice.gpcaSoftware.config to clause ::> iec62304::iec62304Clause5::iec62304Clause5_3;
105
106
 
106
107
  // ── IEC 60601-1 — basic safety and essential performance ─────────────
107
108
  // §8 protection against electrical hazards.
108
- connection : ConformsTo connect conformingElement ::> reqBatteryBackup to clause ::> iec60601_1Clause8;
109
- connection : ConformsTo connect conformingElement ::> powerSupply to clause ::> iec60601_1Clause8;
110
- connection : ConformsTo connect conformingElement ::> batteryPack to clause ::> iec60601_1Clause8;
109
+ connection : ConformsTo connect conformingElement ::> reqBatteryBackup to clause ::> iec60601_1::iec60601_1Clause8;
110
+ connection : ConformsTo connect conformingElement ::> powerSupply to clause ::> iec60601_1::iec60601_1Clause8;
111
+ connection : ConformsTo connect conformingElement ::> batteryPack to clause ::> iec60601_1::iec60601_1Clause8;
111
112
 
112
113
  // §9 protection against mechanical hazards.
113
- connection : ConformsTo connect conformingElement ::> reqFreeFlowPrevention to clause ::> iec60601_1Clause9;
114
- connection : ConformsTo connect conformingElement ::> antiFreeFlowValve to clause ::> iec60601_1Clause9;
115
- connection : ConformsTo connect conformingElement ::> enclosure to clause ::> iec60601_1Clause9;
114
+ connection : ConformsTo connect conformingElement ::> reqFreeFlowPrevention to clause ::> iec60601_1::iec60601_1Clause9;
115
+ connection : ConformsTo connect conformingElement ::> antiFreeFlowValve to clause ::> iec60601_1::iec60601_1Clause9;
116
+ connection : ConformsTo connect conformingElement ::> enclosure to clause ::> iec60601_1::iec60601_1Clause9;
116
117
 
117
118
  // §14 programmable electrical medical systems.
118
- connection : ConformsTo connect conformingElement ::> gpcaDevice.gpcaSoftware to clause ::> iec60601_1Clause14;
119
+ connection : ConformsTo connect conformingElement ::> gpcaDevice.gpcaSoftware to clause ::> iec60601_1::iec60601_1Clause14;
119
120
 
120
121
  // ── IEC 60601-1-2 — electromagnetic compatibility ────────────────────
121
- connection : ConformsTo connect conformingElement ::> controllerBoard to clause ::> iec60601_1_2Clause7;
122
- connection : ConformsTo connect conformingElement ::> controllerBoard to clause ::> iec60601_1_2Clause8;
123
- connection : ConformsTo connect conformingElement ::> reqPost to clause ::> iec60601_1_2Clause8;
122
+ connection : ConformsTo connect conformingElement ::> controllerBoard to clause ::> iec60601_1_2::iec60601_1_2Clause7;
123
+ connection : ConformsTo connect conformingElement ::> controllerBoard to clause ::> iec60601_1_2::iec60601_1_2Clause8;
124
+ connection : ConformsTo connect conformingElement ::> reqPost to clause ::> iec60601_1_2::iec60601_1_2Clause8;
124
125
 
125
126
  // ── ISO 14971 — risk management ──────────────────────────────────────
126
127
  // §7 risk control: the risk control measures themselves.
127
- connection : ConformsTo connect conformingElement ::> lockoutControl to clause ::> iso14971Clause7;
128
- connection : ConformsTo connect conformingElement ::> occlusionAlarmControl to clause ::> iso14971Clause7;
129
- connection : ConformsTo connect conformingElement ::> airDetectionControl to clause ::> iso14971Clause7;
130
- connection : ConformsTo connect conformingElement ::> freeFlowValveControl to clause ::> iso14971Clause7;
131
- connection : ConformsTo connect conformingElement ::> doorInterlockControl to clause ::> iso14971Clause7;
132
- connection : ConformsTo connect conformingElement ::> watchdogControl to clause ::> iso14971Clause7;
133
- connection : ConformsTo connect conformingElement ::> flowCrossCheckControl to clause ::> iso14971Clause7;
128
+ connection : ConformsTo connect conformingElement ::> lockoutControl to clause ::> iso14971::iso14971Clause7;
129
+ connection : ConformsTo connect conformingElement ::> occlusionAlarmControl to clause ::> iso14971::iso14971Clause7;
130
+ connection : ConformsTo connect conformingElement ::> airDetectionControl to clause ::> iso14971::iso14971Clause7;
131
+ connection : ConformsTo connect conformingElement ::> freeFlowValveControl to clause ::> iso14971::iso14971Clause7;
132
+ connection : ConformsTo connect conformingElement ::> doorInterlockControl to clause ::> iso14971::iso14971Clause7;
133
+ connection : ConformsTo connect conformingElement ::> watchdogControl to clause ::> iso14971::iso14971Clause7;
134
+ connection : ConformsTo connect conformingElement ::> flowCrossCheckControl to clause ::> iso14971::iso14971Clause7;
134
135
 
135
136
  // ── Where the evidence for each claim is written down ────────────────
136
137
  // The section reference rides on the link, not on a duplicate section type.
137
- connection : TracesToDocument connect tracedElement ::> iec62304Clause5_2_2 to artifact ::> docSrs {
138
+ connection : TracesToDocument connect tracedElement ::> iec62304::iec62304Clause5::iec62304Clause5_2::iec62304Clause5_2_2 to artifact ::> docSrs {
138
139
  attribute :>> sectionReference = "3";
139
140
  }
140
- connection : TracesToDocument connect tracedElement ::> iec62304Clause5_2_3 to artifact ::> docSrs {
141
+ connection : TracesToDocument connect tracedElement ::> iec62304::iec62304Clause5::iec62304Clause5_2::iec62304Clause5_2_3 to artifact ::> docSrs {
141
142
  attribute :>> sectionReference = "3.2";
142
143
  }
143
- connection : TracesToDocument connect tracedElement ::> iec62304Clause5_3 to artifact ::> docSad {
144
+ connection : TracesToDocument connect tracedElement ::> iec62304::iec62304Clause5::iec62304Clause5_3 to artifact ::> docSad {
144
145
  attribute :>> sectionReference = "4";
145
146
  }
146
- connection : TracesToDocument connect tracedElement ::> iec60601_1Clause8 to artifact ::> docHrs {
147
+ connection : TracesToDocument connect tracedElement ::> iec60601_1::iec60601_1Clause8 to artifact ::> docHrs {
147
148
  attribute :>> sectionReference = "4";
148
149
  }
149
- connection : TracesToDocument connect tracedElement ::> iec60601_1Clause9 to artifact ::> docHrs {
150
+ connection : TracesToDocument connect tracedElement ::> iec60601_1::iec60601_1Clause9 to artifact ::> docHrs {
150
151
  attribute :>> sectionReference = "6";
151
152
  }
152
- connection : TracesToDocument connect tracedElement ::> iec60601_1Clause14 to artifact ::> docSad {
153
+ connection : TracesToDocument connect tracedElement ::> iec60601_1::iec60601_1Clause14 to artifact ::> docSad {
153
154
  attribute :>> sectionReference = "6.2";
154
155
  }
155
- connection : TracesToDocument connect tracedElement ::> iec60601_1_2Clause7 to artifact ::> docHrs {
156
+ connection : TracesToDocument connect tracedElement ::> iec60601_1_2::iec60601_1_2Clause7 to artifact ::> docHrs {
156
157
  attribute :>> sectionReference = "5";
157
158
  }
158
- connection : TracesToDocument connect tracedElement ::> iso14971Clause7 to artifact ::> docRmf {
159
+ connection : TracesToDocument connect tracedElement ::> iso14971::iso14971Clause7 to artifact ::> docRmf {
159
160
  attribute :>> sectionReference = "5";
160
161
  }
161
162
  }
@@ -9,19 +9,14 @@ package memo_examples_gpca_pump_gpca_system {
9
9
  private import memo_architecture_operational_use_cases::*;
10
10
  private import memo_core_common::*;
11
11
 
12
- part gpcaMission : Mission {
13
- attribute :>> id = "MSN-001";
14
- attribute :>> name = "GPCA_Mission";
15
- attribute :>> title = "Safe Patient-Controlled Analgesia";
16
- attribute :>> shortDescription = "Deliver prescribed analgesia with patient-controlled boluses, never exceeding safe dose limits.";
17
- attribute :>> missionKind = "therapeutic device mission";
18
- attribute :>> successCriteria = "Drug delivered per prescription; no overdose or undetected under-infusion; every hazardous condition annunciated within its alarm latency budget.";
19
- attribute :>> operationalContext = "Acute-care hospital ward, fixed (non-ambulatory) location (UC-001).";
20
- }
12
+ private import memo_core_common::MemoIdentity;
13
+ // The device's top-level goal is its IntendedUse (gpcaIntendedUse in
14
+ // gpca_context) — a MemoMission. The former separate gpcaMission was
15
+ // retired: "mission" duplicated the regulated intended-use statement.
21
16
 
22
17
  // ── Functional chains ───────────────────────────────────────
23
18
  part fcPatientBolus : FunctionalFlow {
24
- attribute :>> id = "FC-001";
19
+ @MemoIdentity { :>> providedId = "FC-001"; }
25
20
  attribute :>> name = "PatientBolusChain";
26
21
  attribute :>> flowCategory = FunctionalFlowKind::nominal;
27
22
  attribute :>> endToEndLatencyBudgetMs = "100";
@@ -35,23 +30,23 @@ package memo_examples_gpca_pump_gpca_system {
35
30
  perform fcsBolusLog;
36
31
  }
37
32
  action fcsBolusSense : FunctionalFlowStep {
38
- attribute :>> id = "FCS-001"; attribute :>> name = "SenseBolusRequest";
33
+ @MemoIdentity { :>> providedId = "FCS-001"; } attribute :>> name = "SenseBolusRequest";
39
34
  ref :>> function = fnAcquireSensors; ref :>> exchangedItem = ddBolusRequest;
40
35
  }
41
36
  action fcsBolusValidate : FunctionalFlowStep {
42
- attribute :>> id = "FCS-002"; attribute :>> name = "CheckLockoutAndMaxDose";
37
+ @MemoIdentity { :>> providedId = "FCS-002"; } attribute :>> name = "CheckLockoutAndMaxDose";
43
38
  ref :>> function = fnEnforceLimits; ref :>> exchangedItem = ddPrescription;
44
39
  }
45
40
  action fcsBolusCommand : FunctionalFlowStep {
46
- attribute :>> id = "FCS-003"; attribute :>> name = "CommandBolusFlow";
41
+ @MemoIdentity { :>> providedId = "FCS-003"; } attribute :>> name = "CommandBolusFlow";
47
42
  ref :>> function = fnManageInfusion; ref :>> exchangedItem = cdFlowCommand;
48
43
  }
49
44
  action fcsBolusActuate : FunctionalFlowStep {
50
- attribute :>> id = "FCS-004"; attribute :>> name = "ActuatePumpMotor";
45
+ @MemoIdentity { :>> providedId = "FCS-004"; } attribute :>> name = "ActuatePumpMotor";
51
46
  ref :>> function = fnCommandPump; ref :>> exchangedItem = cdFlowCommand;
52
47
  }
53
48
  action fcsBolusLog : FunctionalFlowStep {
54
- attribute :>> id = "FCS-005"; attribute :>> name = "LogBolusOutcome";
49
+ @MemoIdentity { :>> providedId = "FCS-005"; } attribute :>> name = "LogBolusOutcome";
55
50
  ref :>> function = fnLogEvents; ref :>> exchangedItem = ddEventRecord;
56
51
  }
57
52
  first fcsBolusSense then fcsBolusValidate;
@@ -60,7 +55,7 @@ package memo_examples_gpca_pump_gpca_system {
60
55
  first fcsBolusActuate then fcsBolusLog;
61
56
 
62
57
  part fcAlarmStop : FunctionalFlow {
63
- attribute :>> id = "FC-002";
58
+ @MemoIdentity { :>> providedId = "FC-002"; }
64
59
  attribute :>> name = "AlarmDetectionToSafeStateChain";
65
60
  attribute :>> flowCategory = FunctionalFlowKind::alarm;
66
61
  attribute :>> endToEndLatencyBudgetMs = "20";
@@ -73,19 +68,19 @@ package memo_examples_gpca_pump_gpca_system {
73
68
  perform fcsAlarmAnnunciate;
74
69
  }
75
70
  action fcsAlarmSense : FunctionalFlowStep {
76
- attribute :>> id = "FCS-006"; attribute :>> name = "SenseAlarmCondition";
71
+ @MemoIdentity { :>> providedId = "FCS-006"; } attribute :>> name = "SenseAlarmCondition";
77
72
  ref :>> function = fnAcquireSensors; ref :>> exchangedItem = ddSensorVector;
78
73
  }
79
74
  action fcsAlarmEvaluate : FunctionalFlowStep {
80
- attribute :>> id = "FCS-007"; attribute :>> name = "EvaluateAlarmCondition";
75
+ @MemoIdentity { :>> providedId = "FCS-007"; } attribute :>> name = "EvaluateAlarmCondition";
81
76
  ref :>> function = fnMonitorAlarm; ref :>> exchangedItem = ddSensorVector;
82
77
  }
83
78
  action fcsAlarmStopInfusion : FunctionalFlowStep {
84
- attribute :>> id = "FCS-008"; attribute :>> name = "LimitFlowToKvoSameStep";
79
+ @MemoIdentity { :>> providedId = "FCS-008"; } attribute :>> name = "LimitFlowToKvoSameStep";
85
80
  ref :>> function = fnManageInfusion; ref :>> exchangedItem = cdAlarmSignal;
86
81
  }
87
82
  action fcsAlarmAnnunciate : FunctionalFlowStep {
88
- attribute :>> id = "FCS-009"; attribute :>> name = "AnnunciateAudibleVisual";
83
+ @MemoIdentity { :>> providedId = "FCS-009"; } attribute :>> name = "AnnunciateAudibleVisual";
89
84
  ref :>> function = fnAnnunciate; ref :>> exchangedItem = cdAlarmSignal;
90
85
  }
91
86
  first fcsAlarmSense then fcsAlarmEvaluate;
@@ -93,7 +88,7 @@ package memo_examples_gpca_pump_gpca_system {
93
88
  first fcsAlarmStopInfusion then fcsAlarmAnnunciate;
94
89
 
95
90
  part fcStartup : FunctionalFlow {
96
- attribute :>> id = "FC-003";
91
+ @MemoIdentity { :>> providedId = "FC-003"; }
97
92
  attribute :>> name = "PowerOnSelfTestChain";
98
93
  attribute :>> flowCategory = FunctionalFlowKind::startup;
99
94
  attribute :>> endToEndLatencyBudgetMs = "5000";
@@ -105,24 +100,17 @@ package memo_examples_gpca_pump_gpca_system {
105
100
  }
106
101
 
107
102
  // ── System scenarios ────────────────────────────────────────
108
- action ssBolusDuringBasal : MemoScenario {
109
- attribute :>> id = "SS-001";
103
+ action ssBolusDuringBasal : OperativeScenario {
104
+ @MemoIdentity { :>> providedId = "SS-001"; }
110
105
  attribute :>> name = "PatientBolusDuringBasal";
111
- attribute :>> scenarioKind = ScenarioKind::functional;
112
- attribute :>> variantKind = ScenarioVariantKind::nominal;
113
- attribute :>> operationalCondition = OperationalConditionKind::normal;
114
106
  attribute :>> preCondition = "BASAL mode active; no REQ 25 ignore condition holds";
115
107
  attribute :>> postCondition = "PATIENT_BOLUS mode entered, bolus delivered, return to BASAL";
116
108
  }
117
- action ssAlarmPause : MemoScenario {
118
- attribute :>> id = "SS-002";
109
+ action ssAlarmPause : OperativeScenario {
110
+ attribute :>> scenarioKind = ScenarioKind::alternate;
111
+ @MemoIdentity { :>> providedId = "SS-002"; }
119
112
  attribute :>> name = "InhibitingNotificationPausesInfusion";
120
- attribute :>> scenarioKind = ScenarioKind::functional;
121
- attribute :>> variantKind = ScenarioVariantKind::exception;
122
- attribute :>> variationPoint = "an infusion-inhibiting notification interrupts active therapy";
123
- attribute :>> operationalCondition = OperationalConditionKind::degraded;
124
113
  attribute :>> preCondition = "any ACTIVE therapy mode; infusion-inhibiting notification detected (REQ 59)";
125
114
  attribute :>> postCondition = "PAUSED mode entered in same execution step at FlowRate_kvo_hd keep-vein-open flow; notification annunciated per REQ 59";
126
- ref :>> baseScenario = ssBolusDuringBasal;
127
115
  }
128
116
  }
@@ -40,12 +40,12 @@ package memo_examples_gpca_pump_gpca_trace {
40
40
  private import memo_viewpoints_definitions::*;
41
41
 
42
42
  // ── System context interactions (context view) ──────────────
43
- connection : InteractsWith connect contextParticipant ::> actorPatient to target ::> entityGpcaPump;
44
- connection : InteractsWith connect contextParticipant ::> actorNurse to target ::> entityGpcaPump;
45
- connection : InteractsWith connect contextParticipant ::> actorPrescriber to target ::> entityGpcaPump;
46
- connection : InteractsWith connect contextParticipant ::> actorPharmacist to target ::> entityGpcaPump;
47
- connection : InteractsWith connect contextParticipant ::> actorTechnician to target ::> entityGpcaPump;
48
- connection : InteractsWith connect contextParticipant ::> actorPharmacist to target ::> entityPharmacy;
43
+ connection connect actorPatient to entityGpcaPump;
44
+ connection connect actorNurse to entityGpcaPump;
45
+ connection connect actorPrescriber to entityGpcaPump;
46
+ connection connect actorPharmacist to entityGpcaPump;
47
+ connection connect actorTechnician to entityGpcaPump;
48
+ connection connect actorPharmacist to entityPharmacy;
49
49
 
50
50
  // ── Fig 2.1 context flows (CriSys §2.1) ─────────────────────
51
51
  // Data flows
@@ -72,9 +72,6 @@ package memo_examples_gpca_pump_gpca_trace {
72
72
  first oaLoadReservoir then oaProgram;
73
73
  first oaProgram then oaStartTherapy;
74
74
  first oaStartTherapy then oaRequestBolus;
75
- connection : Supports { attribute :>> supportKind = SupportKind::capability; connect supporter ::> oaStartTherapy to supported ::> ocTitratedAnalgesia; }
76
- connection : Supports { attribute :>> supportKind = SupportKind::capability; connect supporter ::> oaRequestBolus to supported ::> ocTitratedAnalgesia; }
77
- connection : Supports { attribute :>> supportKind = SupportKind::capability; connect supporter ::> oaRespondAlarm to supported ::> ocFailSafeTherapy; }
78
75
  connection : DerivesFrom connect sourceDriver ::> oaProgram to targetRequirement ::> reqDrugLibraryLimits;
79
76
  connection : DerivesFrom connect sourceDriver ::> oaRequestBolus to targetRequirement ::> reqCs25;
80
77
  connection : DerivesFrom connect sourceDriver ::> oaRespondAlarm to targetRequirement ::> reqCs59;
@@ -346,7 +343,7 @@ package memo_examples_gpca_pump_gpca_trace {
346
343
  allocate fnSelfTest to gpcaDevice.gpcaSoftware.systemMonitor;
347
344
  // ── Deployment, hosting, and interface realization ──────────
348
345
  allocation gpcaSoftwareDeployment : DeploysTo allocate gpcaDevice.gpcaSoftware to controllerBoard;
349
- connection : HostedBy connect processingNode ::> mainController to hostAssembly ::> controllerBoard;
346
+ allocation : HostedBy allocate mainController to controllerBoard;
350
347
  #refinement dependency sensorInputInterface to hwSoftwareBus;
351
348
  #refinement dependency actuatorCommandInterface to pumpMotorDrive;
352
349
  connection : BindsToInterface connect portElement ::> portPatientPendant to boundInterface ::> bolusButtonLine;
@@ -534,7 +531,9 @@ package memo_examples_gpca_pump_gpca_trace {
534
531
  connection : TracesRisk connect sourceRiskElement ::> ueAlarmDisregard to targetRiskElement ::> seqOcclusion;
535
532
 
536
533
  // ── FMEA and fault tree integration ─────────────────────────
537
- connection : AnalyzedBy connect element ::> pumpMotorAssembly to analysisArtifact ::> fmeaDelivery;
534
+ // Was `AnalyzedBy`: a zero-attribute edge from an element to the
535
+ // artifact analysing it, which is what a bare dependency states.
536
+ dependency from pumpMotorAssembly to fmeaDelivery;
538
537
  connection : HasFailureMode connect element ::> pumpMotorAssembly to failureMode ::> fmMotorRunaway;
539
538
  connection : HasFailureMode connect element ::> airInLineSensor to failureMode ::> fmAirSensorSilent;
540
539
  connection : HasFailureMode connect element ::> occlusionSensor to failureMode ::> fmOcclusionDrift;