@memoarchitect/ontology 0.13.2 → 0.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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 +51 -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
@@ -35,8 +35,7 @@ package memo_examples_gpca_pump_gpca_standards {
35
35
  // modelled as the artifacts they are rather than as a second document type.
36
36
 
37
37
  part docSrs : MarkdownDocumentSource {
38
- @MemoIdentity { :>> providedId = "DOC-SRS"; }
39
- attribute :>> name = "SoftwareRequirementsSpecification";
38
+ @MemoIdentity { :>> providedId = "DOC-SRS"; :>> label = "SoftwareRequirementsSpecification"; }
40
39
  attribute :>> version = "1.0";
41
40
  attribute :>> artifactKind = ArtifactKind::requirementSpecification;
42
41
  attribute :>> owner = "Software Lead";
@@ -47,8 +46,7 @@ package memo_examples_gpca_pump_gpca_standards {
47
46
  attribute :>> generated = true;
48
47
  }
49
48
  part docSad : MarkdownDocumentSource {
50
- @MemoIdentity { :>> providedId = "DOC-SAD"; }
51
- attribute :>> name = "SoftwareArchitectureDescription";
49
+ @MemoIdentity { :>> providedId = "DOC-SAD"; :>> label = "SoftwareArchitectureDescription"; }
52
50
  attribute :>> version = "1.0";
53
51
  attribute :>> artifactKind = ArtifactKind::architectureDescription;
54
52
  attribute :>> owner = "Systems Architect";
@@ -59,8 +57,7 @@ package memo_examples_gpca_pump_gpca_standards {
59
57
  attribute :>> generated = true;
60
58
  }
61
59
  part docHrs : MarkdownDocumentSource {
62
- @MemoIdentity { :>> providedId = "DOC-HRS"; }
63
- attribute :>> name = "HardwareRequirementsSpecification";
60
+ @MemoIdentity { :>> providedId = "DOC-HRS"; :>> label = "HardwareRequirementsSpecification"; }
64
61
  attribute :>> version = "1.0";
65
62
  attribute :>> artifactKind = ArtifactKind::requirementSpecification;
66
63
  attribute :>> owner = "Hardware Lead";
@@ -71,8 +68,7 @@ package memo_examples_gpca_pump_gpca_standards {
71
68
  attribute :>> generated = true;
72
69
  }
73
70
  part docRmf : MarkdownDocumentSource {
74
- @MemoIdentity { :>> providedId = "DOC-RMF"; }
75
- attribute :>> name = "RiskManagementFile";
71
+ @MemoIdentity { :>> providedId = "DOC-RMF"; :>> label = "RiskManagementFile"; }
76
72
  attribute :>> version = "1.0";
77
73
  attribute :>> artifactKind = ArtifactKind::riskRecord;
78
74
  attribute :>> owner = "Risk Manager";
@@ -85,78 +81,78 @@ package memo_examples_gpca_pump_gpca_standards {
85
81
 
86
82
  // ── IEC 62304 — software lifecycle ───────────────────────────────────
87
83
  // §5.2.2 software requirements content: every software requirement.
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;
84
+ connection : ConformsTo connect conformingElement ::> reqOcclusion to clause ::> iec62304.iec62304Clause5.iec62304Clause5_2.iec62304Clause5_2_2;
85
+ connection : ConformsTo connect conformingElement ::> reqDoorOpen to clause ::> iec62304.iec62304Clause5.iec62304Clause5_2.iec62304Clause5_2_2;
86
+ connection : ConformsTo connect conformingElement ::> reqMaxHourlyDose to clause ::> iec62304.iec62304Clause5.iec62304Clause5_2.iec62304Clause5_2_2;
87
+ connection : ConformsTo connect conformingElement ::> reqEventLogging to clause ::> iec62304.iec62304Clause5.iec62304Clause5_2.iec62304Clause5_2_2;
88
+ connection : ConformsTo connect conformingElement ::> reqWatchdogSafeState to clause ::> iec62304.iec62304Clause5.iec62304Clause5_2.iec62304Clause5_2_2;
89
+ connection : ConformsTo connect conformingElement ::> reqStuckButton to clause ::> iec62304.iec62304Clause5.iec62304Clause5_2.iec62304Clause5_2_2;
90
+ connection : ConformsTo connect conformingElement ::> reqFlowCrossCheck to clause ::> iec62304.iec62304Clause5.iec62304Clause5_2.iec62304Clause5_2_2;
95
91
 
96
92
  // §5.2.3 risk control measures carried into software requirements.
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;
93
+ connection : ConformsTo connect conformingElement ::> reqWatchdogSafeState to clause ::> iec62304.iec62304Clause5.iec62304Clause5_2.iec62304Clause5_2_3;
94
+ connection : ConformsTo connect conformingElement ::> reqFlowCrossCheck to clause ::> iec62304.iec62304Clause5.iec62304Clause5_2.iec62304Clause5_2_3;
99
95
 
100
96
  // §5.3 software architectural design: the software decomposition.
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;
97
+ connection : ConformsTo connect conformingElement ::> gpcaSoftware to clause ::> iec62304.iec62304Clause5.iec62304Clause5_3;
98
+ connection : ConformsTo connect conformingElement ::> gpcaSoftware.tlm to clause ::> iec62304.iec62304Clause5.iec62304Clause5_3;
99
+ connection : ConformsTo connect conformingElement ::> gpcaSoftware.infusionMgr to clause ::> iec62304.iec62304Clause5.iec62304Clause5_3;
100
+ connection : ConformsTo connect conformingElement ::> gpcaSoftware.systemMonitor to clause ::> iec62304.iec62304Clause5.iec62304Clause5_3;
101
+ connection : ConformsTo connect conformingElement ::> gpcaSoftware.config to clause ::> iec62304.iec62304Clause5.iec62304Clause5_3;
106
102
 
107
103
  // ── IEC 60601-1 — basic safety and essential performance ─────────────
108
104
  // §8 protection against electrical hazards.
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;
105
+ connection : ConformsTo connect conformingElement ::> reqBatteryBackup to clause ::> iec60601_1.iec60601_1Clause8;
106
+ connection : ConformsTo connect conformingElement ::> powerSupply to clause ::> iec60601_1.iec60601_1Clause8;
107
+ connection : ConformsTo connect conformingElement ::> batteryPack to clause ::> iec60601_1.iec60601_1Clause8;
112
108
 
113
109
  // §9 protection against mechanical hazards.
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;
110
+ connection : ConformsTo connect conformingElement ::> reqFreeFlowPrevention to clause ::> iec60601_1.iec60601_1Clause9;
111
+ connection : ConformsTo connect conformingElement ::> antiFreeFlowValve to clause ::> iec60601_1.iec60601_1Clause9;
112
+ connection : ConformsTo connect conformingElement ::> enclosure to clause ::> iec60601_1.iec60601_1Clause9;
117
113
 
118
114
  // §14 programmable electrical medical systems.
119
- connection : ConformsTo connect conformingElement ::> gpcaDevice.gpcaSoftware to clause ::> iec60601_1::iec60601_1Clause14;
115
+ connection : ConformsTo connect conformingElement ::> gpcaSoftware to clause ::> iec60601_1.iec60601_1Clause14;
120
116
 
121
117
  // ── IEC 60601-1-2 — electromagnetic compatibility ────────────────────
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;
118
+ connection : ConformsTo connect conformingElement ::> controllerBoard to clause ::> iec60601_1_2.iec60601_1_2Clause7;
119
+ connection : ConformsTo connect conformingElement ::> controllerBoard to clause ::> iec60601_1_2.iec60601_1_2Clause8;
120
+ connection : ConformsTo connect conformingElement ::> reqPost to clause ::> iec60601_1_2.iec60601_1_2Clause8;
125
121
 
126
122
  // ── ISO 14971 — risk management ──────────────────────────────────────
127
123
  // §7 risk control: the risk control measures themselves.
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;
124
+ connection : ConformsTo connect conformingElement ::> lockoutControl to clause ::> iso14971.iso14971Clause7;
125
+ connection : ConformsTo connect conformingElement ::> occlusionAlarmControl to clause ::> iso14971.iso14971Clause7;
126
+ connection : ConformsTo connect conformingElement ::> airDetectionControl to clause ::> iso14971.iso14971Clause7;
127
+ connection : ConformsTo connect conformingElement ::> freeFlowValveControl to clause ::> iso14971.iso14971Clause7;
128
+ connection : ConformsTo connect conformingElement ::> doorInterlockControl to clause ::> iso14971.iso14971Clause7;
129
+ connection : ConformsTo connect conformingElement ::> watchdogControl to clause ::> iso14971.iso14971Clause7;
130
+ connection : ConformsTo connect conformingElement ::> flowCrossCheckControl to clause ::> iso14971.iso14971Clause7;
135
131
 
136
132
  // ── Where the evidence for each claim is written down ────────────────
137
133
  // The section reference rides on the link, not on a duplicate section type.
138
- connection : TracesToDocument connect tracedElement ::> iec62304::iec62304Clause5::iec62304Clause5_2::iec62304Clause5_2_2 to artifact ::> docSrs {
134
+ connection : TracesToDocument connect tracedElement ::> iec62304.iec62304Clause5.iec62304Clause5_2.iec62304Clause5_2_2 to artifact ::> docSrs {
139
135
  attribute :>> sectionReference = "3";
140
136
  }
141
- connection : TracesToDocument connect tracedElement ::> iec62304::iec62304Clause5::iec62304Clause5_2::iec62304Clause5_2_3 to artifact ::> docSrs {
137
+ connection : TracesToDocument connect tracedElement ::> iec62304.iec62304Clause5.iec62304Clause5_2.iec62304Clause5_2_3 to artifact ::> docSrs {
142
138
  attribute :>> sectionReference = "3.2";
143
139
  }
144
- connection : TracesToDocument connect tracedElement ::> iec62304::iec62304Clause5::iec62304Clause5_3 to artifact ::> docSad {
140
+ connection : TracesToDocument connect tracedElement ::> iec62304.iec62304Clause5.iec62304Clause5_3 to artifact ::> docSad {
145
141
  attribute :>> sectionReference = "4";
146
142
  }
147
- connection : TracesToDocument connect tracedElement ::> iec60601_1::iec60601_1Clause8 to artifact ::> docHrs {
143
+ connection : TracesToDocument connect tracedElement ::> iec60601_1.iec60601_1Clause8 to artifact ::> docHrs {
148
144
  attribute :>> sectionReference = "4";
149
145
  }
150
- connection : TracesToDocument connect tracedElement ::> iec60601_1::iec60601_1Clause9 to artifact ::> docHrs {
146
+ connection : TracesToDocument connect tracedElement ::> iec60601_1.iec60601_1Clause9 to artifact ::> docHrs {
151
147
  attribute :>> sectionReference = "6";
152
148
  }
153
- connection : TracesToDocument connect tracedElement ::> iec60601_1::iec60601_1Clause14 to artifact ::> docSad {
149
+ connection : TracesToDocument connect tracedElement ::> iec60601_1.iec60601_1Clause14 to artifact ::> docSad {
154
150
  attribute :>> sectionReference = "6.2";
155
151
  }
156
- connection : TracesToDocument connect tracedElement ::> iec60601_1_2::iec60601_1_2Clause7 to artifact ::> docHrs {
152
+ connection : TracesToDocument connect tracedElement ::> iec60601_1_2.iec60601_1_2Clause7 to artifact ::> docHrs {
157
153
  attribute :>> sectionReference = "5";
158
154
  }
159
- connection : TracesToDocument connect tracedElement ::> iso14971::iso14971Clause7 to artifact ::> docRmf {
155
+ connection : TracesToDocument connect tracedElement ::> iso14971.iso14971Clause7 to artifact ::> docRmf {
160
156
  attribute :>> sectionReference = "5";
161
157
  }
162
158
  }
@@ -15,101 +15,104 @@ package memo_examples_gpca_pump_gpca_system {
15
15
  // retired: "mission" duplicated the regulated intended-use statement.
16
16
 
17
17
  // ── Functional chains ───────────────────────────────────────
18
+ // A step is its function performed at one position in the chain:
19
+ // `action <step> :> <function>`, nested in the flow, so each position keeps
20
+ // its own identity and evidence scope. The item a step handles is a
21
+ // step-local parameter subsetting it, and a `flow` joins two steps wherever
22
+ // one's output is the next one's input. A step's parameters redefine its
23
+ // function's in declaration order, whatever their names, so each narrows
24
+ // the function's parameter at that position to this step's item.
18
25
  action fcPatientBolus : FunctionalFlow {
19
- @MemoIdentity { :>> providedId = "FC-001"; }
20
- attribute :>> name = "PatientBolusChain";
26
+ @MemoIdentity { :>> providedId = "FC-001"; :>> label = "PatientBolusChain"; }
21
27
  attribute :>> flowCategory = FunctionalFlowKind::nominal;
22
28
  attribute :>> endToEndLatencyBudgetMs = "100";
23
29
  attribute :>> safetyRelevant = true;
24
30
  attribute :>> securityRelevant = false;
25
- attribute :>> description = "Bolus button press through lockout/max-dose check to pump actuation and logging.";
26
- perform fcsBolusSense;
27
- perform fcsBolusValidate;
28
- perform fcsBolusCommand;
29
- perform fcsBolusActuate;
30
- perform fcsBolusLog;
31
+ doc /* Bolus button press through lockout/max-dose check to pump actuation and logging. */
32
+ action fcsBolusSense :> fnAcquireSensors {
33
+ @MemoIdentity { :>> providedId = "FCS-001"; :>> label = "SenseBolusRequest"; }
34
+ out item bolusRequest :> ddBolusRequest;
35
+ }
36
+ action fcsBolusValidate :> fnEnforceLimits {
37
+ @MemoIdentity { :>> providedId = "FCS-002"; :>> label = "CheckLockoutAndMaxDose"; }
38
+ in item prescription :> ddPrescription;
39
+ }
40
+ action fcsBolusCommand :> fnManageInfusion {
41
+ @MemoIdentity { :>> providedId = "FCS-003"; :>> label = "CommandBolusFlow"; }
42
+ out item flowCommand :> cdFlowCommand;
43
+ }
44
+ action fcsBolusActuate :> fnCommandPump {
45
+ @MemoIdentity { :>> providedId = "FCS-004"; :>> label = "ActuatePumpMotor"; }
46
+ in item flowCommand :> cdFlowCommand;
47
+ }
48
+ action fcsBolusLog :> fnLogEvents {
49
+ @MemoIdentity { :>> providedId = "FCS-005"; :>> label = "LogBolusOutcome"; }
50
+ out item eventRecord :> ddEventRecord;
51
+ }
52
+ first fcsBolusSense then fcsBolusValidate;
53
+ first fcsBolusValidate then fcsBolusCommand;
54
+ first fcsBolusCommand then fcsBolusActuate;
55
+ first fcsBolusActuate then fcsBolusLog;
56
+ flow from fcsBolusCommand.flowCommand to fcsBolusActuate.flowCommand;
31
57
  }
32
- action fcsBolusSense : FunctionalFlowStep {
33
- @MemoIdentity { :>> providedId = "FCS-001"; } attribute :>> name = "SenseBolusRequest";
34
- ref :>> function = fnAcquireSensors; ref :>> exchangedItem = ddBolusRequest;
35
- }
36
- action fcsBolusValidate : FunctionalFlowStep {
37
- @MemoIdentity { :>> providedId = "FCS-002"; } attribute :>> name = "CheckLockoutAndMaxDose";
38
- ref :>> function = fnEnforceLimits; ref :>> exchangedItem = ddPrescription;
39
- }
40
- action fcsBolusCommand : FunctionalFlowStep {
41
- @MemoIdentity { :>> providedId = "FCS-003"; } attribute :>> name = "CommandBolusFlow";
42
- ref :>> function = fnManageInfusion; ref :>> exchangedItem = cdFlowCommand;
43
- }
44
- action fcsBolusActuate : FunctionalFlowStep {
45
- @MemoIdentity { :>> providedId = "FCS-004"; } attribute :>> name = "ActuatePumpMotor";
46
- ref :>> function = fnCommandPump; ref :>> exchangedItem = cdFlowCommand;
47
- }
48
- action fcsBolusLog : FunctionalFlowStep {
49
- @MemoIdentity { :>> providedId = "FCS-005"; } attribute :>> name = "LogBolusOutcome";
50
- ref :>> function = fnLogEvents; ref :>> exchangedItem = ddEventRecord;
51
- }
52
- first fcsBolusSense then fcsBolusValidate;
53
- first fcsBolusValidate then fcsBolusCommand;
54
- first fcsBolusCommand then fcsBolusActuate;
55
- first fcsBolusActuate then fcsBolusLog;
56
58
 
57
59
  action fcAlarmStop : FunctionalFlow {
58
- @MemoIdentity { :>> providedId = "FC-002"; }
59
- attribute :>> name = "AlarmDetectionToSafeStateChain";
60
+ @MemoIdentity { :>> providedId = "FC-002"; :>> label = "AlarmDetectionToSafeStateChain"; }
60
61
  attribute :>> flowCategory = FunctionalFlowKind::alarm;
61
62
  attribute :>> endToEndLatencyBudgetMs = "20";
62
63
  attribute :>> safetyRelevant = true;
63
64
  attribute :>> securityRelevant = false;
64
- attribute :>> description = "Sensor condition through alarm evaluation to same-step transition to PAUSED (KVO flow, REQ 43) and annunciation.";
65
- perform fcsAlarmSense;
66
- perform fcsAlarmEvaluate;
67
- perform fcsAlarmStopInfusion;
68
- perform fcsAlarmAnnunciate;
69
- }
70
- action fcsAlarmSense : FunctionalFlowStep {
71
- @MemoIdentity { :>> providedId = "FCS-006"; } attribute :>> name = "SenseAlarmCondition";
72
- ref :>> function = fnAcquireSensors; ref :>> exchangedItem = ddSensorVector;
73
- }
74
- action fcsAlarmEvaluate : FunctionalFlowStep {
75
- @MemoIdentity { :>> providedId = "FCS-007"; } attribute :>> name = "EvaluateAlarmCondition";
76
- ref :>> function = fnMonitorAlarm; ref :>> exchangedItem = ddSensorVector;
77
- }
78
- action fcsAlarmStopInfusion : FunctionalFlowStep {
79
- @MemoIdentity { :>> providedId = "FCS-008"; } attribute :>> name = "LimitFlowToKvoSameStep";
80
- ref :>> function = fnManageInfusion; ref :>> exchangedItem = cdAlarmSignal;
81
- }
82
- action fcsAlarmAnnunciate : FunctionalFlowStep {
83
- @MemoIdentity { :>> providedId = "FCS-009"; } attribute :>> name = "AnnunciateAudibleVisual";
84
- ref :>> function = fnAnnunciate; ref :>> exchangedItem = cdAlarmSignal;
65
+ doc /* Sensor condition through alarm evaluation to same-step transition to PAUSED (KVO flow, REQ 43) and annunciation. */
66
+ action fcsAlarmSense :> fnAcquireSensors {
67
+ @MemoIdentity { :>> providedId = "FCS-006"; :>> label = "SenseAlarmCondition"; }
68
+ out item sensorVector :> ddSensorVector;
69
+ }
70
+ action fcsAlarmEvaluate :> fnMonitorAlarm {
71
+ @MemoIdentity { :>> providedId = "FCS-007"; :>> label = "EvaluateAlarmCondition"; }
72
+ in item sensorVector :> ddSensorVector;
73
+ }
74
+ action fcsAlarmStopInfusion :> fnManageInfusion {
75
+ @MemoIdentity { :>> providedId = "FCS-008"; :>> label = "LimitFlowToKvoSameStep"; }
76
+ // A step's parameters redefine its function's by position, so the
77
+ // KVO-limited flow command it emits comes first (fnManageInfusion's
78
+ // `flowCommandOut`); the alarm signal is the input this position adds.
79
+ out item flowCommand :> cdFlowCommand;
80
+ in item alarmSignal :> cdAlarmSignal;
81
+ }
82
+ action fcsAlarmAnnunciate :> fnAnnunciate {
83
+ @MemoIdentity { :>> providedId = "FCS-009"; :>> label = "AnnunciateAudibleVisual"; }
84
+ in item alarmSignal :> cdAlarmSignal;
85
+ }
86
+ first fcsAlarmSense then fcsAlarmEvaluate;
87
+ first fcsAlarmEvaluate then fcsAlarmStopInfusion;
88
+ first fcsAlarmStopInfusion then fcsAlarmAnnunciate;
89
+ flow from fcsAlarmSense.sensorVector to fcsAlarmEvaluate.sensorVector;
90
+ // The alarm signal leaves evaluation through fnMonitorAlarm's own
91
+ // `alarmSignalOut`, which the step inherits by subsetting it.
92
+ flow from fcsAlarmEvaluate.alarmSignalOut to fcsAlarmStopInfusion.alarmSignal;
93
+ flow from fcsAlarmEvaluate.alarmSignalOut to fcsAlarmAnnunciate.alarmSignal;
85
94
  }
86
- first fcsAlarmSense then fcsAlarmEvaluate;
87
- first fcsAlarmEvaluate then fcsAlarmStopInfusion;
88
- first fcsAlarmStopInfusion then fcsAlarmAnnunciate;
89
95
 
90
96
  action fcStartup : FunctionalFlow {
91
- @MemoIdentity { :>> providedId = "FC-003"; }
92
- attribute :>> name = "PowerOnSelfTestChain";
97
+ @MemoIdentity { :>> providedId = "FC-003"; :>> label = "PowerOnSelfTestChain"; }
93
98
  attribute :>> flowCategory = FunctionalFlowKind::startup;
94
99
  attribute :>> endToEndLatencyBudgetMs = "5000";
95
100
  attribute :>> safetyRelevant = true;
96
101
  attribute :>> securityRelevant = false;
97
- attribute :>> description = "Power-on through CPU/memory/sensor self test to IDLE with status display; failed POST blocks therapy.";
102
+ doc /* Power-on through CPU/memory/sensor self test to IDLE with status display; failed POST blocks therapy. */
98
103
  perform fnSelfTest;
99
104
  perform fnPresentStatus;
100
105
  }
101
106
 
102
107
  // ── System scenarios ────────────────────────────────────────
103
108
  action ssBolusDuringBasal : OperativeScenario {
104
- @MemoIdentity { :>> providedId = "SS-001"; }
105
- attribute :>> name = "PatientBolusDuringBasal";
109
+ @MemoIdentity { :>> providedId = "SS-001"; :>> label = "PatientBolusDuringBasal"; }
106
110
  attribute :>> preCondition = "BASAL mode active; no REQ 25 ignore condition holds";
107
111
  attribute :>> postCondition = "PATIENT_BOLUS mode entered, bolus delivered, return to BASAL";
108
112
  }
109
113
  action ssAlarmPause : OperativeScenario {
110
114
  attribute :>> scenarioKind = ScenarioKind::alternate;
111
- @MemoIdentity { :>> providedId = "SS-002"; }
112
- attribute :>> name = "InhibitingNotificationPausesInfusion";
115
+ @MemoIdentity { :>> providedId = "SS-002"; :>> label = "InhibitingNotificationPausesInfusion"; }
113
116
  attribute :>> preCondition = "any ACTIVE therapy mode; infusion-inhibiting notification detected (REQ 59)";
114
117
  attribute :>> postCondition = "PAUSED mode entered in same execution step at FlowRate_kvo_hd keep-vein-open flow; notification annunciated per REQ 59";
115
118
  }