@memoarchitect/ontology 0.13.2 → 0.15.1

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 (315) hide show
  1. package/README.md +5 -3
  2. package/examples/connected-patient-monitor/memo.identity.yaml +34 -0
  3. package/examples/connected-patient-monitor/memo.package.yaml +3 -1
  4. package/examples/connected-patient-monitor/model/catalog/connected_patient_monitor.sysml +17 -12
  5. package/examples/connected-patient-monitor/model/{catalog → methodology}/project.sysml +4 -5
  6. package/examples/embedded-infusion-pump/memo.package.yaml +3 -1
  7. package/examples/embedded-infusion-pump/model/catalog/embedded_infusion_pump.sysml +6 -6
  8. package/examples/embedded-infusion-pump/model/{catalog → methodology}/project.sysml +4 -5
  9. package/examples/functional-logical-physical/memo.identity.yaml +28 -0
  10. package/examples/functional-logical-physical/memo.package.yaml +3 -1
  11. package/examples/functional-logical-physical/model/catalog/functional_logical_physical.sysml +5 -5
  12. package/examples/functional-logical-physical/model/{catalog → methodology}/project.sysml +4 -5
  13. package/examples/gpca-pump/analysis/Samples/01-model-overview.ipynb +40 -139
  14. package/examples/gpca-pump/analysis/Samples/02-architecture-hotspots.ipynb +38 -290
  15. package/examples/gpca-pump/analysis/Samples/03-model-quality.ipynb +47 -217
  16. package/examples/gpca-pump/analysis/Samples/04-change-impact-explorer.ipynb +50 -191
  17. package/examples/gpca-pump/analysis/Samples/05-model-charts.ipynb +42 -181
  18. package/examples/gpca-pump/analysis/Samples/06-ownership-graph.ipynb +40 -164
  19. package/examples/gpca-pump/analysis/Samples/07-model-inventory-table.ipynb +51 -172
  20. package/examples/gpca-pump/analysis/Samples/README.md +15 -9
  21. package/examples/gpca-pump/analysis/memo_model.py +243 -0
  22. package/examples/gpca-pump/memo.identity.yaml +521 -26
  23. package/examples/gpca-pump/memo.package.yaml +3 -1
  24. package/examples/gpca-pump/methodology/gpca_profiles.sysml +56 -47
  25. package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +51 -78
  26. package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +359 -357
  27. package/examples/gpca-pump/model/catalog/gpca_behavior_actions.sysml +9 -9
  28. package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +56 -69
  29. package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +44 -59
  30. package/examples/gpca-pump/model/catalog/gpca_context.sysml +23 -35
  31. package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +33 -40
  32. package/examples/gpca-pump/model/catalog/gpca_formal_behavior.sysml +62 -63
  33. package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +362 -483
  34. package/examples/gpca-pump/model/catalog/gpca_operational.sysml +45 -70
  35. package/examples/gpca-pump/model/catalog/gpca_physical.sysml +6 -12
  36. package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +173 -169
  37. package/examples/gpca-pump/model/catalog/gpca_risk.sysml +139 -225
  38. package/examples/gpca-pump/model/catalog/gpca_standards.sysml +43 -47
  39. package/examples/gpca-pump/model/catalog/gpca_system.sysml +68 -65
  40. package/examples/gpca-pump/model/catalog/gpca_trace.sysml +147 -116
  41. package/examples/gpca-pump/model/catalog/gpca_verification.sysml +65 -90
  42. package/examples/gpca-pump/model/catalog/viewpoints/context/views/context_system_context_view.sysml +4 -6
  43. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/cybersecurity_cybersecurity_view.sysml +4 -6
  44. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_cyber_assessment_view.sysml +4 -6
  45. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_threat_model_view.sysml +4 -6
  46. package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_allocation_view.sysml +2 -4
  47. package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_browser_view.sysml +7 -6
  48. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/behavior_action_flow_view.sysml +4 -6
  49. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/document_architecture_description_view.sysml +4 -6
  50. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_device_interconnect_view.sysml +3 -5
  51. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_logical_architecture_view.sysml +4 -6
  52. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_mode_state_view.sysml +4 -6
  53. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_system_decomposition_view.sysml +3 -5
  54. package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_scenario_sequence_view.sysml +3 -5
  55. package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_use_case_view.sysml +4 -6
  56. package/examples/gpca-pump/model/catalog/viewpoints/physical/views/physical_physical_bom_view.sysml +2 -4
  57. package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/document_dhf_index_view.sysml +3 -5
  58. package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/requirements_requirements_trace_view.sysml +2 -4
  59. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_hazard_analysis_view.sysml +4 -6
  60. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_rmf_view.sysml +4 -6
  61. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_fmea_view.sysml +2 -4
  62. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_risk_chain_view.sysml +4 -6
  63. package/examples/gpca-pump/model/catalog/viewpoints/software/views/document_sdd_view.sysml +4 -6
  64. package/examples/gpca-pump/model/catalog/viewpoints/software/views/software_software_architecture_view.sysml +3 -5
  65. package/examples/gpca-pump/model/catalog/viewpoints/usability/views/document_usability_view.sysml +4 -6
  66. package/examples/gpca-pump/model/catalog/viewpoints/verification/views/document_vv_view.sysml +3 -5
  67. package/examples/gpca-pump/model/catalog/viewpoints/verification/views/verification_verification_coverage_view.sysml +2 -4
  68. package/examples/gpca-pump/model/{catalog → methodology}/project.sysml +8 -6
  69. package/examples/ivd-laboratory-system/memo.package.yaml +3 -1
  70. package/examples/ivd-laboratory-system/model/catalog/ivd_laboratory_system.sysml +12 -9
  71. package/examples/ivd-laboratory-system/model/{catalog → methodology}/project.sysml +4 -5
  72. package/examples/manual-surgical-instrument/memo.package.yaml +3 -1
  73. package/examples/manual-surgical-instrument/model/catalog/manual_surgical_instrument.sysml +2 -6
  74. package/examples/manual-surgical-instrument/model/{catalog → methodology}/project.sysml +4 -5
  75. package/examples/multidimensional-layers/memo.package.yaml +3 -1
  76. package/examples/multidimensional-layers/model/catalog/multidimensional_layers.sysml +2 -4
  77. package/examples/multidimensional-layers/model/{catalog → methodology}/project.sysml +4 -5
  78. package/examples/nested-architecture-dsm/memo.identity.yaml +93 -0
  79. package/examples/nested-architecture-dsm/memo.package.yaml +3 -1
  80. package/examples/nested-architecture-dsm/model/catalog/architecture/functional/functions.sysml +30 -30
  81. package/examples/nested-architecture-dsm/model/catalog/architecture/logical/structure.sysml +28 -28
  82. package/examples/nested-architecture-dsm/model/catalog/architecture/operational/context.sysml +2 -4
  83. package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/needs.sysml +4 -4
  84. package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/requirements.sysml +7 -7
  85. package/examples/nested-architecture-dsm/model/catalog/assurance/verification_validation/verification_validation.sysml +8 -8
  86. package/examples/nested-architecture-dsm/model/{catalog → methodology}/project.sysml +4 -5
  87. package/examples/reusable-instrument/memo.package.yaml +3 -1
  88. package/examples/reusable-instrument/model/catalog/reusable_instrument.sysml +7 -7
  89. package/examples/reusable-instrument/model/{catalog → methodology}/project.sysml +4 -5
  90. package/examples/robot-cell-family/README.md +34 -0
  91. package/examples/robot-cell-family/memo.identity.yaml +142 -0
  92. package/examples/robot-cell-family/memo.package.yaml +7 -0
  93. package/examples/robot-cell-family/model/methodology/project.sysml +30 -0
  94. package/examples/robot-cell-family/model/shared/shared.sysml +53 -0
  95. package/examples/robot-cell-family/model/sos/chains.sysml +36 -0
  96. package/examples/robot-cell-family/model/sos/icds.sysml +29 -0
  97. package/examples/robot-cell-family/model/sos/sos.sysml +31 -0
  98. package/examples/robot-cell-family/model/sos/use_cases.sysml +25 -0
  99. package/examples/robot-cell-family/model/systems/manipulation/manipulation_system.sysml +35 -0
  100. package/examples/robot-cell-family/model/systems/navigation/navigation_system.sysml +46 -0
  101. package/examples/robot-cell-family/model/systems/perception/perception_system.sysml +37 -0
  102. package/examples/robot-platform/memo.package.yaml +3 -0
  103. package/examples/robot-platform/model/platform.sysml +15 -0
  104. package/examples/ros-mobile-robot/README.md +5 -4
  105. package/examples/ros-mobile-robot/memo.identity.yaml +94 -0
  106. package/examples/ros-mobile-robot/memo.package.yaml +3 -1
  107. package/examples/ros-mobile-robot/model/catalog/ros_mobile_robot.sysml +26 -29
  108. package/examples/ros-mobile-robot/model/{catalog → methodology}/project.sysml +8 -14
  109. package/examples/software-only-medical-device/memo.package.yaml +3 -1
  110. package/examples/software-only-medical-device/model/catalog/software_only_medical_device.sysml +9 -10
  111. package/examples/software-only-medical-device/model/{catalog → methodology}/project.sysml +8 -9
  112. package/examples/surgical-closure-workflow/memo.package.yaml +3 -1
  113. package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +23 -26
  114. package/examples/surgical-closure-workflow/model/{catalog → methodology}/project.sysml +7 -5
  115. package/examples/surgical-robot/memo.package.yaml +3 -1
  116. package/examples/surgical-robot/model/catalog/surgical_robot.sysml +14 -12
  117. package/examples/surgical-robot/model/{catalog → methodology}/project.sysml +4 -5
  118. package/examples/sysml-diagram-samples/README.md +1 -0
  119. package/examples/sysml-diagram-samples/memo.identity.yaml +459 -0
  120. package/examples/sysml-diagram-samples/memo.package.yaml +3 -1
  121. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/viewpoint.sysml +10 -20
  122. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/action_flow_view.sysml +5 -5
  123. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/browser_view.sysml +10 -13
  124. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.sysml +11 -7
  125. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/diagram_samples.sysml +63 -8
  126. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/drill_down_view.sysml +88 -0
  127. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/functional_flow_view.sysml +25 -25
  128. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/grid_view.sysml +6 -6
  129. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.sysml +15 -17
  130. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.sysml +21 -21
  131. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/package_view.sysml +7 -7
  132. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/requirements_view.sysml +5 -5
  133. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/sequence_view.sysml +14 -14
  134. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/state_transition_view.sysml +16 -17
  135. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/tree_view.sysml +9 -9
  136. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/use_case_view.sysml +7 -14
  137. package/examples/sysml-diagram-samples/model/{catalog → methodology}/project.sysml +5 -5
  138. package/examples/sysml-diagram-samples/model/sysml_v2_activity_example.sysml +1 -1
  139. package/examples/temperature-alarm/memo.identity.yaml +6 -0
  140. package/examples/temperature-alarm/memo.package.yaml +3 -1
  141. package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +43 -21
  142. package/examples/temperature-alarm/model/{catalog → methodology}/project.sysml +4 -5
  143. package/examples/ui-screen-regions/memo.identity.yaml +33 -0
  144. package/examples/ui-screen-regions/memo.package.yaml +3 -1
  145. package/examples/ui-screen-regions/model/catalog/architecture/functional/functions.sysml +12 -12
  146. package/examples/ui-screen-regions/model/catalog/architecture/implementation/ui.sysml +18 -18
  147. package/examples/ui-screen-regions/model/catalog/artifacts/assets/catalog.sysml +6 -6
  148. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/comments.sysml +3 -3
  149. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/notes.sysml +1 -1
  150. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/rationales.sysml +1 -1
  151. package/examples/ui-screen-regions/model/catalog/assurance/human_factors/human_factors.sysml +10 -10
  152. package/examples/ui-screen-regions/model/catalog/assurance/requirements/needs.sysml +1 -1
  153. package/examples/ui-screen-regions/model/catalog/assurance/requirements/requirements.sysml +12 -12
  154. package/examples/ui-screen-regions/model/catalog/assurance/safety_risk/risk.sysml +15 -15
  155. package/examples/ui-screen-regions/model/catalog/assurance/verification_validation/verification_validation.sysml +6 -6
  156. package/examples/ui-screen-regions/model/catalog/viewpoints/functional/views/ui_functional_tree.sysml +1 -2
  157. package/examples/ui-screen-regions/model/catalog/viewpoints/requirements/views/ui_requirements_trace.sysml +1 -2
  158. package/examples/ui-screen-regions/model/catalog/viewpoints/risk/views/ui_risk_chain.sysml +1 -2
  159. package/examples/ui-screen-regions/model/{catalog → methodology}/project.sysml +4 -5
  160. package/extensions/README.md +65 -16
  161. package/extensions/aadl/memo.package.yaml +1 -1
  162. package/extensions/aadl/src/aadl_extension.sysml +5 -2
  163. package/extensions/aadl/src/correspondence/memo_aadl_correspondence.sysml +29 -50
  164. package/extensions/clinical/memo.package.yaml +1 -1
  165. package/extensions/clinical/src/clinical_extension.sysml +2 -0
  166. package/extensions/cloud/memo.package.yaml +1 -1
  167. package/extensions/container/memo.package.yaml +1 -1
  168. package/extensions/messaging/memo.package.yaml +1 -1
  169. package/extensions/messaging/src/messaging_extension.sysml +2 -2
  170. package/extensions/ros/memo.package.yaml +1 -1
  171. package/extensions/ros/src/ros_extension.sysml +25 -24
  172. package/extensions/template/memo.package.yaml +1 -1
  173. package/extensions/template/model/extension.sysml +25 -0
  174. package/memo.manifest.yaml +1 -7
  175. package/methodologies/default/memo.package.yaml +1 -1
  176. package/methodologies/gpca/memo.package.yaml +1 -1
  177. package/ontology/memo.package.yaml +1 -1
  178. package/package.json +6 -4
  179. package/profile/memo.package.yaml +1 -1
  180. package/src/architecture/decisions/memo_decisions.sysml +9 -2
  181. package/src/architecture/functional/behavior/memo_behavior.sysml +27 -7
  182. package/src/architecture/functional/functions/memo_functions.sysml +45 -31
  183. package/src/architecture/functional/memo_architecture_functional.sysml +14 -0
  184. package/src/architecture/implementation/memo_architecture_implementation.sysml +21 -0
  185. package/src/architecture/implementation/software/runtime/memo_software_runtime.sysml +7 -0
  186. package/src/architecture/implementation/software/structure/memo_software_structure.sysml +58 -17
  187. package/src/architecture/implementation/ui/memo_ui.sysml +1 -1
  188. package/src/architecture/logical/interfaces/memo_interfaces.sysml +67 -58
  189. package/src/architecture/logical/memo_architecture_logical.sysml +13 -0
  190. package/src/architecture/logical/structure/memo_logical_structure.sysml +27 -8
  191. package/src/architecture/operational/context/stakeholders/memo_stakeholders.sysml +4 -1
  192. package/src/architecture/operational/memo_architecture_operational.sysml +19 -0
  193. package/src/architecture/operational/scenarios/memo_scenarios.sysml +9 -8
  194. package/src/architecture/operational/structure/memo_operational.sysml +5 -2
  195. package/src/architecture/operational/use_cases/memo_use_cases.sysml +16 -8
  196. package/src/architecture/realization/deployment/memo_deployment.sysml +30 -10
  197. package/src/architecture/realization/memo_architecture_realization.sysml +13 -0
  198. package/src/architecture/realization/physical/memo_physical_architecture.sysml +61 -0
  199. package/src/architecture/variability/memo_variability.sysml +87 -0
  200. package/src/artifacts/configuration_management/memo_configuration_management.sysml +95 -3
  201. package/src/artifacts/core/memo_controlled_artifacts.sysml +4 -2
  202. package/src/artifacts/standards/cfr_21_820.sysml +12 -24
  203. package/src/artifacts/standards/fda_cybersecurity_2023.sysml +13 -20
  204. package/src/artifacts/standards/iec_60601_1.sysml +16 -32
  205. package/src/artifacts/standards/iec_60601_1_2.sysml +5 -10
  206. package/src/artifacts/standards/iec_60812.sysml +4 -8
  207. package/src/artifacts/standards/iec_62304.sysml +607 -47
  208. package/src/artifacts/standards/iec_62366_1.sysml +12 -24
  209. package/src/artifacts/standards/iec_81001_5_1.sysml +8 -16
  210. package/src/artifacts/standards/iso_13485.sysml +12 -24
  211. package/src/artifacts/standards/iso_14971.sysml +118 -20
  212. package/src/artifacts/standards/iso_iec_ieee_42010.sysml +3 -6
  213. package/src/artifacts/standards/memo_artifacts_standards_traceability.sysml +14 -4
  214. package/src/artifacts/templates/dhf/fda-cybersecurity/postmarket-surveillance.md +1 -2
  215. package/src/artifacts/templates/dhf/fda-cybersecurity/vuln-assessment.md +1 -2
  216. package/src/artifacts/templates/dhf/iec-62304/sad.md +1 -2
  217. package/src/artifacts/templates/dhf/iec-62304/sbom.md +1 -2
  218. package/src/artifacts/templates/dhf/iec-62304/sdp.md +1 -2
  219. package/src/artifacts/templates/dhf/iec-62304/soup.md +3 -5
  220. package/src/artifacts/templates/dhf/system/sad.md +1 -1
  221. package/src/artifacts/templates/dhf/system/standards-checklist.md +2 -2
  222. package/src/artifacts/templates/dhf/system/standards-traceability.md +1 -1
  223. package/src/assurance/cybersecurity/memo_cybersecurity.sysml +339 -13
  224. package/src/assurance/human_factors/memo_human_factors.sysml +6 -2
  225. package/src/assurance/safety_risk/analysis/memo_fmea.sysml +7 -3
  226. package/src/assurance/safety_risk/memo_risk.sysml +39 -1
  227. package/src/core/common/memo_common.sysml +61 -68
  228. package/src/core/enumerations/memo_enumerations.sysml +93 -9
  229. package/src/core/relationships/memo_relationships.sysml +17 -11
  230. package/src/core/relationships/memo_workspace_membership.sysml +284 -0
  231. package/src/core/semantics/semantics.sysml +58 -0
  232. package/src/core/terminology/terminology.sysml +7 -0
  233. package/src/memo_namespaces.sysml +6 -0
  234. package/src/methodology/archetypes/memo_archetypes.sysml +8 -16
  235. package/src/methodology/core/memo_core.sysml +85 -29
  236. package/src/methodology/profiles/memo_profiles.sysml +217 -61
  237. package/src/methodology/workflow/memo_workflow.sysml +28 -0
  238. package/src/rules/closure/closure_rules.sysml +250 -4
  239. package/src/rules/crosslayer/cross_layer_rules.sysml +11 -0
  240. package/src/rules/ontology/ontology_invariants.sysml +288 -48
  241. package/src/rules/quantitative/quantitative_rules.sysml +4 -0
  242. package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +28 -28
  243. package/src/viewpoints/clinical/clinical_viewpoint.sysml +2 -3
  244. package/src/viewpoints/context/context_viewpoint.sysml +2 -3
  245. package/src/viewpoints/context/views/system_context_view/system_context_view.sysml +3 -5
  246. package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +2 -3
  247. package/src/viewpoints/definitions/memo_view_layout.sysml +150 -0
  248. package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +0 -4
  249. package/src/viewpoints/functional/functional_viewpoint.sysml +2 -3
  250. package/src/viewpoints/functional/views/function_allocation_view/function_allocation_view.sysml +2 -4
  251. package/src/viewpoints/functional/views/system_functional_tree_view/system_functional_tree_view.sysml +2 -4
  252. package/src/viewpoints/logical/logical_viewpoint.sysml +2 -3
  253. package/src/viewpoints/logical/views/logical_architecture_view/logical_architecture_view.sysml +2 -4
  254. package/src/viewpoints/operational/operational_viewpoint.sysml +2 -3
  255. package/src/viewpoints/operational/views/use_case_view/use_case_view.sysml +3 -5
  256. package/src/viewpoints/physical/physical_viewpoint.sysml +2 -3
  257. package/src/viewpoints/physical/views/network_topology_view/network_topology_view.sysml +2 -4
  258. package/src/viewpoints/physical/views/physical_bom_view/physical_bom_view.sysml +2 -4
  259. package/src/viewpoints/rendering/memo_rendering.sysml +50 -98
  260. package/src/viewpoints/requirements/requirements_viewpoint.sysml +2 -3
  261. package/src/viewpoints/requirements/views/requirements_traceability_view/requirements_traceability_view.sysml +2 -4
  262. package/src/viewpoints/risk/risk_viewpoint.sysml +2 -3
  263. package/src/viewpoints/risk/views/risk_chain_view/risk_chain_view.sysml +2 -4
  264. package/src/viewpoints/software/software_viewpoint.sysml +2 -3
  265. package/src/viewpoints/software/views/software_architecture_view/software_architecture_view.sysml +3 -5
  266. package/src/viewpoints/stakeholders_concerns/memo_stakeholders_concerns.sysml +11 -29
  267. package/src/viewpoints/ui_layout/ui_layout_viewpoint.sysml +2 -3
  268. package/src/viewpoints/ui_layout/views/screen_layout_view/screen_layout_view.sysml +1 -1
  269. package/src/viewpoints/usability/usability_viewpoint.sysml +2 -3
  270. package/src/viewpoints/verification/verification_viewpoint.sysml +2 -3
  271. package/src/viewpoints/verification/views/verification_coverage_view/verification_coverage_view.sysml +2 -4
  272. package/stage1/syside-67f92dc96ba75cd05b5c8d13.ids.gz +0 -0
  273. package/stage1/syside-67f92dc96ba75cd05b5c8d13.json.gz +0 -0
  274. package/templates/default/memo.package.yaml +6 -1
  275. package/templates/default/model/catalog/architecture/system.sysml +7 -3
  276. package/templates/default/model/{catalog → methodology}/project.sysml +3 -4
  277. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.viewlayout +0 -47
  278. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.viewlayout +0 -94
  279. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.viewlayout +0 -13
  280. package/examples/ui-screen-regions/model/catalog/relationships.sysml +0 -8
  281. package/extensions/aadl/src/methodology/aadl_methodology.sysml +0 -19
  282. package/extensions/clinical/src/methodology/clinical_methodology.sysml +0 -24
  283. package/extensions/cloud/src/methodology/cloud_methodology.sysml +0 -19
  284. package/extensions/container/src/methodology/container_methodology.sysml +0 -19
  285. package/extensions/messaging/src/methodology/messaging_methodology.sysml +0 -19
  286. package/extensions/ros/src/methodology/ros_methodology.sysml +0 -27
  287. package/extensions/template/src/extension.sysml +0 -39
  288. package/templates/connected-device/memo.package.yaml +0 -13
  289. package/templates/connected-device/model/catalog/architecture/system.sysml +0 -5
  290. package/templates/connected-device/model/catalog/artifacts/catalog.sysml +0 -5
  291. package/templates/connected-device/model/catalog/assurance/requirements.sysml +0 -7
  292. package/templates/connected-device/model/catalog/project.sysml +0 -30
  293. package/templates/connected-device/package.json +0 -8
  294. package/templates/connected-device/syside.toml +0 -13
  295. package/templates/infusion-pump/memo.package.yaml +0 -13
  296. package/templates/infusion-pump/model/catalog/architecture/system.sysml +0 -5
  297. package/templates/infusion-pump/model/catalog/artifacts/catalog.sysml +0 -5
  298. package/templates/infusion-pump/model/catalog/assurance/requirements.sysml +0 -7
  299. package/templates/infusion-pump/model/catalog/project.sysml +0 -30
  300. package/templates/infusion-pump/package.json +0 -8
  301. package/templates/infusion-pump/syside.toml +0 -13
  302. package/templates/monitoring-device/memo.package.yaml +0 -13
  303. package/templates/monitoring-device/model/catalog/architecture/system.sysml +0 -5
  304. package/templates/monitoring-device/model/catalog/artifacts/catalog.sysml +0 -5
  305. package/templates/monitoring-device/model/catalog/assurance/requirements.sysml +0 -7
  306. package/templates/monitoring-device/model/catalog/project.sysml +0 -30
  307. package/templates/monitoring-device/package.json +0 -8
  308. package/templates/monitoring-device/syside.toml +0 -13
  309. package/templates/samd/memo.package.yaml +0 -13
  310. package/templates/samd/model/catalog/architecture/system.sysml +0 -5
  311. package/templates/samd/model/catalog/artifacts/catalog.sysml +0 -5
  312. package/templates/samd/model/catalog/assurance/requirements.sysml +0 -7
  313. package/templates/samd/model/catalog/project.sysml +0 -30
  314. package/templates/samd/package.json +0 -8
  315. package/templates/samd/syside.toml +0 -13
@@ -1,3 +1,5 @@
1
1
  name: gpca-pump
2
- entrypoint: model/catalog/project.sysml
2
+ entrypoint: model/methodology/project.sysml
3
3
  include: [model]
4
+ toolchain:
5
+ packager: internal
@@ -8,7 +8,7 @@
8
8
  //
9
9
  // Two differences from the pre-flip behaviour are deliberate and recorded:
10
10
  //
11
- // 1. Cybersecurity is excluded by *not* selecting `memo_assurance_cybersecurity`
11
+ // 1. Cybersecurity is excluded by *not* importing `memo_assurance_cybersecurity`
12
12
  // and by two explicit RulePolicy entries disabling the cybersecurity closure
13
13
  // rules. Before, `excludedKind` named eleven cybersecurity kinds; naming the
14
14
  // discipline once is the same selection stated at the level the methodology
@@ -28,64 +28,73 @@ package memo_examples_gpca_pump_methodology_gpca_profiles {
28
28
 
29
29
  private import memo_methodology_core::*;
30
30
  private import memo_methodology_profiles::*;
31
- private import memo_core_enumerations::*;
32
- private import memo_rules_closure::*;
33
31
 
34
- private import memo_core_common::*;
32
+ // ── The selection ────────────────────────────────────────────────────
33
+ //
34
+ // What this methodology selects is what this package publicly imports.
35
+ // The five architecture layers, each through the package that publicly
36
+ // imports the whole layer:
37
+ public import memo_architecture_operational::*;
38
+ public import memo_architecture_functional::*;
39
+ public import memo_architecture_logical::*;
40
+ public import memo_architecture_implementation::*;
41
+ public import memo_architecture_realization::*;
42
+
43
+ // Explicit means explicit. A methodology that names its assurance
44
+ // disciplines and stops there selects no rules at all, because rules
45
+ // live in their own packages. Before the flip an empty list read as
46
+ // "everything", which hid exactly this: the selection said nothing and
47
+ // the tools behaved as though it said everything. Cybersecurity is the
48
+ // discipline not imported.
49
+ public import memo_core_common::*;
50
+ public import memo_core_enumerations::*;
51
+ public import memo_core_relationships::*;
52
+ public import memo_core_annotations::*;
53
+ public import memo_core_consistency_rules::*;
54
+ public import memo_assurance_requirements::*;
55
+ public import memo_assurance_requirements_needs::*;
56
+ public import memo_assurance_safety_risk::*;
57
+ public import memo_assurance_human_factors::*;
58
+ public import memo_assurance_verification_validation::*;
59
+ public import memo_rules_closure::*;
60
+ public import memo_rules_crosslayer::*;
61
+ public import memo_rules_quantitative::*;
62
+ public import memo_rules_ontology::*;
63
+
64
+ private import memo_artifacts_standards_iso_14971::iso14971;
65
+ private import memo_artifacts_standards_iec_62304::iec62304;
66
+ private import memo_artifacts_standards_cfr_21_820::cfr21Part820;
67
+ private import memo_artifacts_standards_iso_13485::iso13485;
68
+ private import memo_viewpoints_context_context_viewpoint::contextViewpoint;
69
+ private import memo_viewpoints_logical_logical_viewpoint::logicalArchitectureViewpoint;
70
+ private import memo_viewpoints_risk_risk_viewpoint::riskViewpoint;
71
+
35
72
  private import memo_core_common::MemoIdentity;
36
73
  part gpcaMethodDefinition : MethodologyDefinition {
37
- @MemoIdentity { :>> providedId = "METH-GPCA-001"; }
38
- attribute :>> name = "GPCAPrototypeMethodology";
74
+ @MemoIdentity { :>> providedId = "METH-GPCA-001"; :>> label = "GPCAPrototypeMethodology"; }
39
75
  attribute :>> version = "0.6.5";
40
76
  attribute :>> domain = "medical device modeling";
41
- attribute :>> description = "GPCA infusion pump methodology for the non-networked prototype variant. Explicitly selects the five architecture layers and four of the five assurance disciplines; cybersecurity is out of scope because the prototype has no network interface. The prototype uses no SOUP.";
77
+ doc /* GPCA infusion pump methodology for the non-networked prototype variant. Explicitly selects the five architecture layers and four of the five assurance disciplines; cybersecurity is out of scope because the prototype has no network interface. The prototype uses no SOUP. */
42
78
  ref :>> baseMethodology = mdDefaultDefinition;
43
79
  attribute :>> scopeMode = ScopeModeKind::explicit;
44
80
 
45
- attribute :>> includedLayer = (
46
- "memo_architecture_operational",
47
- "memo_architecture_functional",
48
- "memo_architecture_logical",
49
- "memo_architecture_implementation",
50
- "memo_architecture_realization"
81
+ // Typed. The standards GPCA also names, ISO 14155, IEC 62366 and
82
+ // IEC 60601-1, have no RegulatoryStandard in the ontology yet, and the
83
+ // artifact kind "RiskManagementPlan" is no ArtifactKind literal; as
84
+ // strings they selected nothing and nothing said so.
85
+ ref :>> includedStandard = (
86
+ iso14971,
87
+ iec62304,
88
+ cfr21Part820,
89
+ iso13485
51
90
  );
52
91
 
53
- // Explicit means explicit. A methodology that names its assurance
54
- // disciplines and stops there selects no rules at all, because rules
55
- // live in their own packages. Before the flip an empty list read as
56
- // "everything", which hid exactly this: the selection said nothing and
57
- // the tools behaved as though it said everything.
58
- attribute :>> includedModule = (
59
- "memo_core_common",
60
- "memo_core_enumerations",
61
- "memo_core_relationships",
62
- "memo_core_annotations",
63
- "memo_core_consistency_rules",
64
- "memo_assurance_requirements",
65
- "memo_assurance_requirements_needs",
66
- "memo_assurance_safety_risk",
67
- "memo_assurance_human_factors",
68
- "memo_assurance_verification_validation",
69
- "memo_rules_closure",
70
- "memo_rules_crosslayer",
71
- "memo_rules_quantitative",
72
- "memo_rules_ontology"
92
+ ref :>> includedViewpoint = (
93
+ contextViewpoint,
94
+ logicalArchitectureViewpoint,
95
+ riskViewpoint
73
96
  );
74
97
 
75
- attribute :>> includedStandard = (
76
- "ISO 14971",
77
- "IEC 62304",
78
- "21 CFR 820",
79
- "ISO 13485",
80
- "ISO 14155",
81
- "IEC 62366",
82
- "IEC 60601-1"
83
- );
84
-
85
- attribute :>> includedArtifactKind = ("RiskManagementPlan");
86
-
87
- attribute :>> includedViewpoint = ("VP-CTX", "VP-LOG", "VP-RISK");
88
-
89
98
  part disableThreatMitigation : RulePolicy :> rulePolicy {
90
99
  ref :>> targetRule : ThreatMitigationRule;
91
100
  attribute :>> disposition = RuleDispositionKind::disabled;
@@ -8,17 +8,15 @@ package memo_examples_gpca_pump_gpca_analysis {
8
8
  private import memo_core_common::MemoIdentity;
9
9
  // ── FMEA (IEC 60812) ────────────────────────────────────────
10
10
  part fmeaDelivery : FMEAWorksheet {
11
- @MemoIdentity { :>> providedId = "FMEA-001"; }
12
- attribute :>> name = "DrugDeliveryFMEA";
11
+ @MemoIdentity { :>> providedId = "FMEA-001"; :>> label = "DrugDeliveryFMEA"; }
13
12
  attribute :>> analysisScope = "Fluid path, pump mechanism, delivery sensors, and patient pendant";
14
13
  attribute :>> standardReference = "IEC 60812";
15
14
  attribute :>> analysisBasis = "UMN CriSys GPCA architecture v2.0";
16
15
  attribute :>> revisionDate = "2026-07-03";
17
16
  attribute :>> reviewer = "Safety review board";
18
17
  }
19
- part fmMotorRunaway : FailureMode {
20
- @MemoIdentity { :>> providedId = "FM-001"; }
21
- attribute :>> name = "PumpMotorRunaway";
18
+ item fmMotorRunaway : FailureMode {
19
+ @MemoIdentity { :>> providedId = "FM-001"; :>> label = "PumpMotorRunaway"; }
22
20
  attribute :>> failureModeKind = FailureModeKind::unintendedFunction;
23
21
  attribute :>> effect = "Excess drug delivered to the patient beyond the prescribed rate.";
24
22
  attribute :>> severityRating = 10;
@@ -27,11 +25,10 @@ package memo_examples_gpca_pump_gpca_analysis {
27
25
  attribute :>> detectionRating = 3;
28
26
  attribute :>> rpn = 60;
29
27
  attribute :>> criticality = CriticalityKind::catastrophic;
30
- attribute :>> description = "Motor steps faster than commanded, delivering more drug than prescribed.";
28
+ doc /* Motor steps faster than commanded, delivering more drug than prescribed. */
31
29
  }
32
- part fmAirSensorSilent : FailureMode {
33
- @MemoIdentity { :>> providedId = "FM-002"; }
34
- attribute :>> name = "AirSensorFailsSilent";
30
+ item fmAirSensorSilent : FailureMode {
31
+ @MemoIdentity { :>> providedId = "FM-002"; :>> label = "AirSensorFailsSilent"; }
35
32
  attribute :>> failureModeKind = FailureModeKind::lossOfFunction;
36
33
  attribute :>> effect = "Air embolism reaches the patient undetected.";
37
34
  attribute :>> severityRating = 10;
@@ -40,11 +37,10 @@ package memo_examples_gpca_pump_gpca_analysis {
40
37
  attribute :>> detectionRating = 4;
41
38
  attribute :>> rpn = 120;
42
39
  attribute :>> criticality = CriticalityKind::catastrophic;
43
- attribute :>> description = "Air-in-line sensor reports 'no air' regardless of actual line state.";
40
+ doc /* Air-in-line sensor reports 'no air' regardless of actual line state. */
44
41
  }
45
- part fmOcclusionDrift : FailureMode {
46
- @MemoIdentity { :>> providedId = "FM-003"; }
47
- attribute :>> name = "OcclusionSensorDrift";
42
+ item fmOcclusionDrift : FailureMode {
43
+ @MemoIdentity { :>> providedId = "FM-003"; :>> label = "OcclusionSensorDrift"; }
48
44
  attribute :>> failureModeKind = FailureModeKind::degradedFunction;
49
45
  attribute :>> effect = "Occluded line is detected late or not at all, interrupting therapy.";
50
46
  attribute :>> severityRating = 7;
@@ -53,11 +49,10 @@ package memo_examples_gpca_pump_gpca_analysis {
53
49
  attribute :>> detectionRating = 4;
54
50
  attribute :>> rpn = 112;
55
51
  attribute :>> criticality = CriticalityKind::high;
56
- attribute :>> description = "Pressure sensor drifts so occlusions are detected late or not at all.";
52
+ doc /* Pressure sensor drifts so occlusions are detected late or not at all. */
57
53
  }
58
- part fmStuckBolusButton : FailureMode {
59
- @MemoIdentity { :>> providedId = "FM-004"; }
60
- attribute :>> name = "BolusButtonStuckClosed";
54
+ item fmStuckBolusButton : FailureMode {
55
+ @MemoIdentity { :>> providedId = "FM-004"; :>> label = "BolusButtonStuckClosed"; }
61
56
  attribute :>> failureModeKind = FailureModeKind::unintendedFunction;
62
57
  attribute :>> effect = "Repeated unrequested boluses are delivered.";
63
58
  attribute :>> severityRating = 9;
@@ -66,11 +61,10 @@ package memo_examples_gpca_pump_gpca_analysis {
66
61
  attribute :>> detectionRating = 2;
67
62
  attribute :>> rpn = 54;
68
63
  attribute :>> criticality = CriticalityKind::high;
69
- attribute :>> description = "Pendant switch shorted, continuously asserting bolus requests.";
64
+ doc /* Pendant switch shorted, continuously asserting bolus requests. */
70
65
  }
71
- part fmBatteryEarlyDepletion : FailureMode {
72
- @MemoIdentity { :>> providedId = "FM-005"; }
73
- attribute :>> name = "BatteryDepletesEarly";
66
+ item fmBatteryEarlyDepletion : FailureMode {
67
+ @MemoIdentity { :>> providedId = "FM-005"; :>> label = "BatteryDepletesEarly"; }
74
68
  attribute :>> failureModeKind = FailureModeKind::prematureFunction;
75
69
  attribute :>> effect = "Pump loses power during transport, stopping therapy.";
76
70
  attribute :>> severityRating = 6;
@@ -79,94 +73,83 @@ package memo_examples_gpca_pump_gpca_analysis {
79
73
  attribute :>> detectionRating = 3;
80
74
  attribute :>> rpn = 72;
81
75
  attribute :>> criticality = CriticalityKind::medium;
82
- attribute :>> description = "Aged battery sustains less than the specified backup duration during transport.";
76
+ doc /* Aged battery sustains less than the specified backup duration during transport. */
83
77
  }
84
- part feOverdose : FailureEffect {
85
- @MemoIdentity { :>> providedId = "FE-001"; }
86
- attribute :>> name = "ExcessDrugDelivered";
78
+ item feOverdose : FailureEffect {
79
+ @MemoIdentity { :>> providedId = "FE-001"; :>> label = "ExcessDrugDelivered"; }
87
80
  attribute :>> effectLevel = FailureEffectLevelKind::endEffect;
88
81
  attribute :>> effectOnPatient = "opioid overdose, respiratory depression";
89
82
  attribute :>> effectOnOperator = "emergency intervention required";
90
83
  attribute :>> effectOnSystem = "therapy stopped by cross-check or clinician";
91
84
  attribute :>> severity = SeverityKind::catastrophic;
92
85
  }
93
- part feAirDelivered : FailureEffect {
94
- @MemoIdentity { :>> providedId = "FE-002"; }
95
- attribute :>> name = "AirReachesPatientLine";
86
+ item feAirDelivered : FailureEffect {
87
+ @MemoIdentity { :>> providedId = "FE-002"; :>> label = "AirReachesPatientLine"; }
96
88
  attribute :>> effectLevel = FailureEffectLevelKind::endEffect;
97
89
  attribute :>> effectOnPatient = "risk of vascular air embolism";
98
90
  attribute :>> effectOnOperator = "line re-prime and incident report";
99
91
  attribute :>> effectOnSystem = "undetected hazardous state";
100
92
  attribute :>> severity = SeverityKind::catastrophic;
101
93
  }
102
- part feTherapyInterrupted : FailureEffect {
103
- @MemoIdentity { :>> providedId = "FE-003"; }
104
- attribute :>> name = "TherapyInterruptedUnnoticed";
94
+ item feTherapyInterrupted : FailureEffect {
95
+ @MemoIdentity { :>> providedId = "FE-003"; :>> label = "TherapyInterruptedUnnoticed"; }
105
96
  attribute :>> effectLevel = FailureEffectLevelKind::endEffect;
106
97
  attribute :>> effectOnPatient = "untreated pain; possible post-occlusion bolus";
107
98
  attribute :>> effectOnOperator = "delayed response";
108
99
  attribute :>> effectOnSystem = "under-delivery until detected";
109
100
  attribute :>> severity = SeverityKind::serious;
110
101
  }
111
- part fcMotorDriverFault : FailureCause {
112
- @MemoIdentity { :>> providedId = "FCA-001"; }
113
- attribute :>> name = "MotorDriverElectronicsFault";
102
+ item fcMotorDriverFault : FailureCause {
103
+ @MemoIdentity { :>> providedId = "FCA-001"; :>> label = "MotorDriverElectronicsFault"; }
114
104
  attribute :>> causeCategory = FailureCauseCategoryKind::design;
115
105
  attribute :>> causeDescription = "Driver stage latch-up or firmware step-rate computation fault";
116
106
  attribute :>> occurrenceRating = ProbabilityKind::remote;
117
107
  attribute :>> preventionMethod = "independent flow cross-check; watchdog";
118
108
  }
119
- part fcTransducerAging : FailureCause {
120
- @MemoIdentity { :>> providedId = "FCA-002"; }
121
- attribute :>> name = "UltrasonicTransducerAging";
109
+ item fcTransducerAging : FailureCause {
110
+ @MemoIdentity { :>> providedId = "FCA-002"; :>> label = "UltrasonicTransducerAging"; }
122
111
  attribute :>> causeCategory = FailureCauseCategoryKind::wear;
123
112
  attribute :>> causeDescription = "Air sensor transducer sensitivity degrades with age";
124
113
  attribute :>> occurrenceRating = ProbabilityKind::occasional;
125
114
  attribute :>> preventionMethod = "POST sensor plausibility check; periodic maintenance";
126
115
  }
127
- part fcPendantAbuse : FailureCause {
128
- @MemoIdentity { :>> providedId = "FCA-003"; }
129
- attribute :>> name = "PendantCableAbuse";
116
+ item fcPendantAbuse : FailureCause {
117
+ @MemoIdentity { :>> providedId = "FCA-003"; :>> label = "PendantCableAbuse"; }
130
118
  attribute :>> causeCategory = FailureCauseCategoryKind::misuse;
131
119
  attribute :>> causeDescription = "Cable crushed in bed rail shorts the switch line";
132
120
  attribute :>> occurrenceRating = ProbabilityKind::occasional;
133
121
  attribute :>> preventionMethod = "stuck-input detection (REQ-X-09); strain-relieved cable";
134
122
  }
135
123
  part dmFlowCrossCheck : DetectionMethod {
136
- @MemoIdentity { :>> providedId = "DM-001"; }
137
- attribute :>> name = "CommandedVsMeasuredFlowComparison";
124
+ @MemoIdentity { :>> providedId = "DM-001"; :>> label = "CommandedVsMeasuredFlowComparison"; }
138
125
  attribute :>> methodKind = DetectionMethodKind::monitoring;
139
126
  attribute :>> detectionPoint = "every execution step during ACTIVE therapy";
140
127
  attribute :>> confidence = DetectionKind::high;
141
128
  }
142
129
  part dmPostSensorCheck : DetectionMethod {
143
- @MemoIdentity { :>> providedId = "DM-002"; }
144
- attribute :>> name = "POSTSensorPlausibilityCheck";
130
+ @MemoIdentity { :>> providedId = "DM-002"; :>> label = "POSTSensorPlausibilityCheck"; }
145
131
  attribute :>> methodKind = DetectionMethodKind::selfDiagnostic;
146
132
  attribute :>> detectionPoint = "power-on and periodic in-service test";
147
133
  attribute :>> confidence = DetectionKind::moderate;
148
134
  }
149
135
  part dmStuckInputMonitor : DetectionMethod {
150
- @MemoIdentity { :>> providedId = "DM-003"; }
151
- attribute :>> name = "StuckInputMonitor";
136
+ @MemoIdentity { :>> providedId = "DM-003"; :>> label = "StuckInputMonitor"; }
152
137
  attribute :>> methodKind = DetectionMethodKind::monitoring;
153
138
  attribute :>> detectionPoint = "bolus input asserted beyond 60 s";
154
139
  attribute :>> confidence = DetectionKind::high;
155
140
  }
156
141
  part fmeaActionAirSensor : FMEAAction {
157
- @MemoIdentity { :>> providedId = "FMA-001"; }
158
- attribute :>> name = "AddRedundantAirDetectionWindow";
142
+ @MemoIdentity { :>> providedId = "FMA-001"; :>> label = "AddRedundantAirDetectionWindow"; }
159
143
  attribute :>> actionKind = FMEAActionKind::designChange;
160
144
  attribute :>> responsible = "hardware lead";
161
145
  attribute :>> targetCompletionDate = "2026-09-30";
162
146
  attribute :>> revisedRpn = 40;
163
- attribute :>> description = "Add second sensing window downstream so a single silent transducer cannot mask air.";
147
+ doc /* Add second sensing window downstream so a single silent transducer cannot mask air. */
164
148
  }
165
149
 
166
150
  // ── Fault tree (overdose top event) ─────────────────────────
167
151
  part ftaOverdose : FaultTree {
168
- @MemoIdentity { :>> providedId = "FTA-001"; }
169
- attribute :>> name = "OverdoseFaultTree";
152
+ @MemoIdentity { :>> providedId = "FTA-001"; :>> label = "OverdoseFaultTree"; }
170
153
  attribute :>> standardReference = "IEC 61025";
171
154
  attribute :>> analysisScope = "Drug over-delivery during ACTIVE therapy";
172
155
  attribute :>> topEventDescription = "Drug delivered in excess of prescription limits";
@@ -174,68 +157,58 @@ package memo_examples_gpca_pump_gpca_analysis {
174
157
  attribute :>> revisionDate = "2026-07-03";
175
158
  }
176
159
  part fteOverdoseTop : FaultTreeNode {
177
- @MemoIdentity { :>> providedId = "FTE-001"; }
178
- attribute :>> name = "ExcessDrugDeliveredTopEvent";
160
+ @MemoIdentity { :>> providedId = "FTE-001"; :>> label = "ExcessDrugDeliveredTopEvent"; }
179
161
  attribute :>> eventKind = FaultTreeEventKind::topEvent;
180
- attribute :>> description = "Delivered volume exceeds prescribed limits";
162
+ doc /* Delivered volume exceeds prescribed limits */
181
163
  }
182
164
  part fteMotorRunaway : FaultTreeNode {
183
- @MemoIdentity { :>> providedId = "FTE-002"; }
184
- attribute :>> name = "MotorRunawayBasicEvent";
165
+ @MemoIdentity { :>> providedId = "FTE-002"; :>> label = "MotorRunawayBasicEvent"; }
185
166
  attribute :>> eventKind = FaultTreeEventKind::basicEvent;
186
167
  attribute :>> failureRate = 0.000001;
187
168
  attribute :>> exposureTime = 100.0;
188
- attribute :>> description = "Pump motor delivers faster than commanded (FM-001)";
169
+ doc /* Pump motor delivers faster than commanded (FM-001) */
189
170
  }
190
171
  part fteCrossCheckFails : FaultTreeNode {
191
- @MemoIdentity { :>> providedId = "FTE-003"; }
192
- attribute :>> name = "FlowCrossCheckUnavailable";
172
+ @MemoIdentity { :>> providedId = "FTE-003"; :>> label = "FlowCrossCheckUnavailable"; }
193
173
  attribute :>> eventKind = FaultTreeEventKind::basicEvent;
194
174
  attribute :>> failureRate = 0.00001;
195
175
  attribute :>> exposureTime = 100.0;
196
- attribute :>> description = "Independent flow sensor or comparison logic fails (FM-003 family)";
176
+ doc /* Independent flow sensor or comparison logic fails (FM-003 family) */
197
177
  }
198
178
  part fteLockoutFault : FaultTreeNode {
199
- @MemoIdentity { :>> providedId = "FTE-004"; }
200
- attribute :>> name = "LockoutEnforcementFault";
179
+ @MemoIdentity { :>> providedId = "FTE-004"; :>> label = "LockoutEnforcementFault"; }
201
180
  attribute :>> eventKind = FaultTreeEventKind::basicEvent;
202
181
  attribute :>> failureRate = 0.0000001;
203
182
  attribute :>> exposureTime = 100.0;
204
- attribute :>> description = "Infusion manager authorizes bolus despite active lockout";
183
+ doc /* Infusion manager authorizes bolus despite active lockout */
205
184
  }
206
185
  part fteStuckButtonUndetected : FaultTreeNode {
207
- @MemoIdentity { :>> providedId = "FTE-005"; }
208
- attribute :>> name = "StuckBolusButtonUndetected";
186
+ @MemoIdentity { :>> providedId = "FTE-005"; :>> label = "StuckBolusButtonUndetected"; }
209
187
  attribute :>> eventKind = FaultTreeEventKind::basicEvent;
210
188
  attribute :>> failureRate = 0.000001;
211
189
  attribute :>> exposureTime = 100.0;
212
- attribute :>> description = "Pendant stuck closed and stuck-input monitor fails (FM-004)";
190
+ doc /* Pendant stuck closed and stuck-input monitor fails (FM-004) */
213
191
  }
214
192
  part ftgOverdoseOr : FaultTreeNode {
215
- @MemoIdentity { :>> providedId = "FTG-001"; }
216
- attribute :>> name = "OverdelivryPathOrGate";
193
+ @MemoIdentity { :>> providedId = "FTG-001"; :>> label = "OverdelivryPathOrGate"; }
217
194
  attribute :>> gateKind = FaultTreeGateKind::orGate;
218
195
  }
219
196
  part ftgMotorAnd : FaultTreeNode {
220
- @MemoIdentity { :>> providedId = "FTG-002"; }
221
- attribute :>> name = "MotorRunawayAndCrossCheckGate";
197
+ @MemoIdentity { :>> providedId = "FTG-002"; :>> label = "MotorRunawayAndCrossCheckGate"; }
222
198
  attribute :>> gateKind = FaultTreeGateKind::andGate;
223
199
  }
224
200
  part ftgBolusAnd : FaultTreeNode {
225
- @MemoIdentity { :>> providedId = "FTG-003"; }
226
- attribute :>> name = "UnauthorizedBolusAndGate";
201
+ @MemoIdentity { :>> providedId = "FTG-003"; :>> label = "UnauthorizedBolusAndGate"; }
227
202
  attribute :>> gateKind = FaultTreeGateKind::andGate;
228
203
  }
229
- part mcsMotorPath : MinimalCutSet {
230
- @MemoIdentity { :>> providedId = "MCS-001"; }
231
- attribute :>> name = "MotorRunawayWithLostCrossCheck";
204
+ item mcsMotorPath : MinimalCutSet {
205
+ @MemoIdentity { :>> providedId = "MCS-001"; :>> label = "MotorRunawayWithLostCrossCheck"; }
232
206
  attribute :>> cutSetOrder = 2;
233
207
  attribute :>> involvedEvents = "FTE-002, FTE-003";
234
208
  attribute :>> significance = "dominant contributor; controlled by RC-008 independence";
235
209
  }
236
- part mcsBolusPath : MinimalCutSet {
237
- @MemoIdentity { :>> providedId = "MCS-002"; }
238
- attribute :>> name = "StuckButtonWithLockoutFault";
210
+ item mcsBolusPath : MinimalCutSet {
211
+ @MemoIdentity { :>> providedId = "MCS-002"; :>> label = "StuckButtonWithLockoutFault"; }
239
212
  attribute :>> cutSetOrder = 2;
240
213
  attribute :>> involvedEvents = "FTE-004, FTE-005";
241
214
  attribute :>> significance = "requires simultaneous software and detection failure; controlled by RC-001 and REQ-X-09";