@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
@@ -70,11 +70,11 @@ package memo_examples_gpca_pump_gpca_behavior_actions {
70
70
  action actuateMotor : ActuatePumpMotor;
71
71
  action logEvent : LogTherapyEvent;
72
72
 
73
- flow of SensorStatusVector from acquireSensors.sensorStatus to evaluateAlarms.sensorStatus;
74
- flow of AlarmSignal from evaluateAlarms.alarmSignal to computeFlow.alarmSignal;
75
- flow of BolusRequestSignal from enforceLimits.authorizedBolus to computeFlow.authorizedBolus;
76
- flow of FlowCommand from computeFlow.flowCommand to actuateMotor.flowCommand;
77
- flow of FlowCommand from actuateMotor.actuation to logEvent.actuation;
73
+ flow sensorStatusVectorFlow of SensorStatusVector from acquireSensors.sensorStatus to evaluateAlarms.sensorStatus;
74
+ flow alarmSignalFlow of AlarmSignal from evaluateAlarms.alarmSignal to computeFlow.alarmSignal;
75
+ flow bolusRequestSignalFlow of BolusRequestSignal from enforceLimits.authorizedBolus to computeFlow.authorizedBolus;
76
+ flow flowCommandToActuateMotor of FlowCommand from computeFlow.flowCommand to actuateMotor.flowCommand;
77
+ flow flowCommandToLogEvent of FlowCommand from actuateMotor.actuation to logEvent.actuation;
78
78
 
79
79
  first start then acquireSensors;
80
80
  first acquireSensors then evaluateAlarms;
@@ -87,11 +87,11 @@ package memo_examples_gpca_pump_gpca_behavior_actions {
87
87
 
88
88
  // ── Swimlane allocation to the logical architecture ─────────
89
89
  allocate infusionDeliveryFlow.acquireSensors to gpcaDevice.gpcaDeviceSensors;
90
- allocate infusionDeliveryFlow.evaluateAlarms to gpcaDevice.gpcaSoftware.alarm;
91
- allocate infusionDeliveryFlow.enforceLimits to gpcaDevice.gpcaSoftware.infusionMgr;
92
- allocate infusionDeliveryFlow.computeFlow to gpcaDevice.gpcaSoftware.infusionMgr;
90
+ allocate infusionDeliveryFlow.evaluateAlarms to gpcaSoftware.alarm;
91
+ allocate infusionDeliveryFlow.enforceLimits to gpcaSoftware.infusionMgr;
92
+ allocate infusionDeliveryFlow.computeFlow to gpcaSoftware.infusionMgr;
93
93
  allocate infusionDeliveryFlow.actuateMotor to pumpMotorAssembly;
94
- allocate infusionDeliveryFlow.logEvent to gpcaDevice.gpcaSoftware.logging;
94
+ allocate infusionDeliveryFlow.logEvent to gpcaSoftware.logging;
95
95
 
96
96
  // ── Functional decomposition and component allocation ───────
97
97
  // FUNC-001 "AcquireSensorData" is what the SYSTEM is answerable for.
@@ -25,7 +25,6 @@ package memo_examples_gpca_pump_gpca_behavior_modes {
25
25
  // ═════════════════════════════════════════════════════════════
26
26
  state topLevelModeMachine : StateMachine {
27
27
  @MemoIdentity { :>> providedId = "BM-001"; }
28
- attribute :>> name = "TopLevelModeMachine";
29
28
  attribute :>> machineKind = "hierarchical state machine";
30
29
  attribute :>> executionSemantics = "single-step synchronous; sub-modes inherit all parent-mode requirements";
31
30
  attribute fidelityScope = "Requirements-derived therapy mode hierarchy; partial abstraction of CITE-009, not a state-for-state Stateflow transcription";
@@ -35,9 +34,9 @@ package memo_examples_gpca_pump_gpca_behavior_modes {
35
34
  state modeOFF : MemoState {
36
35
  @MemoIdentity { :>> providedId = "MODE-000"; }
37
36
  attribute :>> stateKind = StateKind::mode;
38
- attribute :>> name = "OFF";
37
+ @MemoIdentity { :>> label = "OFF"; }
39
38
  attribute :>> modeKind = "top (default)";
40
- attribute :>> description = "No functionality; the GPCA is turned off. FlowRate_output = 0 (REQ 6).";
39
+ doc /* No functionality; the GPCA is turned off. FlowRate_output = 0 (REQ 6). */
41
40
  attribute :>> entryCondition = "System_stop_prog commanded while ON (REQ 5); default mode";
42
41
  attribute :>> exitCondition = "System_start_prog commanded (REQ 4)";
43
42
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.2"; }
@@ -46,9 +45,9 @@ package memo_examples_gpca_pump_gpca_behavior_modes {
46
45
  state modeON : MemoState {
47
46
  @MemoIdentity { :>> providedId = "MODE-001"; }
48
47
  attribute :>> stateKind = StateKind::mode;
49
- attribute :>> name = "ON";
48
+ @MemoIdentity { :>> label = "ON"; }
50
49
  attribute :>> modeKind = "operational parent";
51
- attribute :>> description = "Topmost operational mode: prescription configuration (REQ 8), infusion initiation gating (REQ 7, 9), notification (REQ 10) and logging (REQ 11) are available.";
50
+ doc /* Topmost operational mode: prescription configuration (REQ 8), infusion initiation gating (REQ 7, 9), notification (REQ 10) and logging (REQ 11) are available. */
52
51
  attribute :>> entryCondition = "System_start_prog from OFF; A.4 variables set to defaults (REQ 4)";
53
52
  attribute :>> exitCondition = "System_stop_prog: stop infusion, cancel all notifications (REQ 5)";
54
53
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.3"; }
@@ -56,9 +55,9 @@ package memo_examples_gpca_pump_gpca_behavior_modes {
56
55
  state modeIDLE : MemoState {
57
56
  @MemoIdentity { :>> providedId = "MODE-002"; }
58
57
  attribute :>> stateKind = StateKind::mode;
59
- attribute :>> name = "ON.IDLE";
58
+ @MemoIdentity { :>> label = "ON.IDLE"; }
60
59
  attribute :>> modeKind = "idle";
61
- attribute :>> description = "Default sub-mode on entry to ON; no infusion, FlowRate_output = 0 (REQ 14); prescription set-up happens here. 'IDLE Time' actions after Max_IDLE_Duration_const (REQ 15).";
60
+ doc /* Default sub-mode on entry to ON; no infusion, FlowRate_output = 0 (REQ 14); prescription set-up happens here. 'IDLE Time' actions after Max_IDLE_Duration_const (REQ 15). */
62
61
  attribute :>> entryCondition = "OFF -> ON transition (REQ 4); infusion complete (REQ 28); PAUSED inhibit (REQ 47)";
63
62
  attribute :>> exitCondition = "confirmed second Infusion_initiate_prog (REQ 12/13)";
64
63
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.4"; }
@@ -67,9 +66,9 @@ package memo_examples_gpca_pump_gpca_behavior_modes {
67
66
  state modeTHERAPY : MemoState {
68
67
  @MemoIdentity { :>> providedId = "MODE-003"; }
69
68
  attribute :>> stateKind = StateKind::mode;
70
- attribute :>> name = "ON.THERAPY";
69
+ @MemoIdentity { :>> label = "ON.THERAPY"; }
71
70
  attribute :>> modeKind = "therapy parent";
72
- attribute :>> description = "Parent of all drug-delivering sub-modes. Delivers FlowRate_Mode_macro within Tolerance_Max_const (REQ 16); monitors under-infusion (REQ 17), low reservoir (REQ 18), over-infusion, VTBI, air, reverse delivery, empty reservoir (REQ 19-23).";
71
+ doc /* Parent of all drug-delivering sub-modes. Delivers FlowRate_Mode_macro within Tolerance_Max_const (REQ 16); monitors under-infusion (REQ 17), low reservoir (REQ 18), over-infusion, VTBI, air, reverse delivery, empty reservoir (REQ 19-23). */
73
72
  attribute :>> entryCondition = "infusion initiated (REQ 12/13)";
74
73
  attribute :>> exitCondition = "infusion complete to IDLE (REQ 28); manual stop from PAUSED (REQ 47); system stop (REQ 5)";
75
74
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.5"; }
@@ -77,9 +76,9 @@ package memo_examples_gpca_pump_gpca_behavior_modes {
77
76
  state modePAUSED : MemoState {
78
77
  @MemoIdentity { :>> providedId = "MODE-004"; }
79
78
  attribute :>> stateKind = StateKind::mode;
80
- attribute :>> name = "ON.THERAPY.PAUSED";
79
+ @MemoIdentity { :>> label = "ON.THERAPY.PAUSED"; }
81
80
  attribute :>> modeKind = "paused (KVO delivery)";
82
- attribute :>> description = "Infusion paused by notification actions or manual inhibit. FlowRate_Mode_macro = FlowRate_kvo_hd — keep-vein-open flow within Tolerance_Max_const, NOT zero (REQ 43). 'PAUSED Time' actions after Max_PAUSED_Duration_const (REQ 44). Infusion_initiate_prog while Inhibited_Infusion_macro = TRUE causes no transition (REQ 45).";
81
+ doc /* Infusion paused by notification actions or manual inhibit. FlowRate_Mode_macro = FlowRate_kvo_hd — keep-vein-open flow within Tolerance_Max_const, NOT zero (REQ 43). 'PAUSED Time' actions after Max_PAUSED_Duration_const (REQ 44). Infusion_initiate_prog while Inhibited_Infusion_macro = TRUE causes no transition (REQ 45). */
83
82
  attribute :>> entryCondition = "REQ 19-23 alarm transitions, REQ 29 manual inhibit, REQ 30 all-inhibited, REQ 37-39 sub-mode inhibits, REQ 13 initiate-while-inhibited";
84
83
  attribute :>> exitCondition = "Infusion_initiate_prog with Inhibited_Infusion_macro = FALSE (REQ 46); Infusion_inhibit_prog to IDLE (REQ 47)";
85
84
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.10 (REQ 43-47)"; }
@@ -88,9 +87,9 @@ package memo_examples_gpca_pump_gpca_behavior_modes {
88
87
  state modeACTIVE : MemoState {
89
88
  @MemoIdentity { :>> providedId = "MODE-005"; }
90
89
  attribute :>> stateKind = StateKind::mode;
91
- attribute :>> name = "ON.THERAPY.ACTIVE";
90
+ @MemoIdentity { :>> label = "ON.THERAPY.ACTIVE"; }
92
91
  attribute :>> modeKind = "active parent";
93
- attribute :>> description = "Actual infusion through BASAL, SQUARE BOLUS or PATIENT BOLUS. Only mode where a patient bolus may be requested (REQ 25). Square boluses are scheduled automatically every Interval_sbolus_prog for Duration_sbolus_prog (REQ 24). Actual_Infusion_Duration_macro accumulates here.";
92
+ doc /* Actual infusion through BASAL, SQUARE BOLUS or PATIENT BOLUS. Only mode where a patient bolus may be requested (REQ 25). Square boluses are scheduled automatically every Interval_sbolus_prog for Duration_sbolus_prog (REQ 24). Actual_Infusion_Duration_macro accumulates here. */
94
93
  attribute :>> entryCondition = "infusion initiated (REQ 12) or resumed (REQ 46)";
95
94
  attribute :>> exitCondition = "infusion complete (REQ 28); PAUSED via REQ 29/30/37-39";
96
95
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.6"; }
@@ -98,9 +97,9 @@ package memo_examples_gpca_pump_gpca_behavior_modes {
98
97
  state modeBASAL : MemoState {
99
98
  @MemoIdentity { :>> providedId = "MODE-006"; }
100
99
  attribute :>> stateKind = StateKind::mode;
101
- attribute :>> name = "ON.THERAPY.ACTIVE.BASAL";
100
+ @MemoIdentity { :>> label = "ON.THERAPY.ACTIVE.BASAL"; }
102
101
  attribute :>> modeKind = "active-basal";
103
- attribute :>> description = "Constant-rate delivery at FlowRate_basal_prog within Tolerance_Max_const (REQ 40). FlowRate_Mode_macro = FlowRate_basal_prog.";
102
+ doc /* Constant-rate delivery at FlowRate_basal_prog within Tolerance_Max_const (REQ 40). FlowRate_Mode_macro = FlowRate_basal_prog. */
104
103
  attribute :>> entryCondition = "infusion initiated/resumed (REQ 12/46); square bolus ended (REQ 34); patient bolus ended (REQ 35)";
105
104
  attribute :>> exitCondition = "scheduled square bolus (REQ 31); patient bolus granted (REQ 32); Inhibited_Infusion_macro (REQ 37)";
106
105
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.7"; }
@@ -109,9 +108,9 @@ package memo_examples_gpca_pump_gpca_behavior_modes {
109
108
  state modeSQUARE : MemoState {
110
109
  @MemoIdentity { :>> providedId = "MODE-007"; }
111
110
  attribute :>> stateKind = StateKind::mode;
112
- attribute :>> name = "ON.THERAPY.ACTIVE.SQUARE_BOLUS";
111
+ @MemoIdentity { :>> label = "ON.THERAPY.ACTIVE.SQUARE_BOLUS"; }
113
112
  attribute :>> modeKind = "active-square-bolus (auto-scheduled)";
114
- attribute :>> description = "Prescribed extra delivery at FlowRate_sbolus_prog within Tolerance_Max_const (REQ 41). Auto-initiates at the prescribed frequency and ends after the prescribed duration — no external trigger (§4.1.8, REQ 24). FlowRate_Mode_macro = FlowRate_sbolus_prog.";
113
+ doc /* Prescribed extra delivery at FlowRate_sbolus_prog within Tolerance_Max_const (REQ 41). Auto-initiates at the prescribed frequency and ends after the prescribed duration — no external trigger (§4.1.8, REQ 24). FlowRate_Mode_macro = FlowRate_sbolus_prog. */
115
114
  attribute :>> entryCondition = "scheduled start per REQ 24 with REQ 31 guards; patient bolus end with square scheduled (REQ 36)";
116
115
  attribute :>> exitCondition = "scheduled end or Inhibited_Bolus_macro (REQ 34); patient bolus granted (REQ 33); inhibits (REQ 39)";
117
116
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.8"; }
@@ -120,9 +119,9 @@ package memo_examples_gpca_pump_gpca_behavior_modes {
120
119
  state modePBOLUS : MemoState {
121
120
  @MemoIdentity { :>> providedId = "MODE-008"; }
122
121
  attribute :>> stateKind = StateKind::mode;
123
- attribute :>> name = "ON.THERAPY.ACTIVE.PATIENT_BOLUS";
122
+ @MemoIdentity { :>> label = "ON.THERAPY.ACTIVE.PATIENT_BOLUS"; }
124
123
  attribute :>> modeKind = "active-patient-bolus";
125
- attribute :>> description = "Patient-requested delivery at FlowRate_pbolus_prog within Tolerance_Max_const (REQ 42). Granted only when no REQ 25 ignore condition holds. FlowRate_Mode_macro = FlowRate_pbolus_prog.";
124
+ doc /* Patient-requested delivery at FlowRate_pbolus_prog within Tolerance_Max_const (REQ 42). Granted only when no REQ 25 ignore condition holds. FlowRate_Mode_macro = FlowRate_pbolus_prog. */
126
125
  attribute :>> entryCondition = "BolusRequest_prog with no REQ 25 ignore condition (REQ 32/33)";
127
126
  attribute :>> exitCondition = "Inhibited_PatientBolus_macro or duration >= Duration_pbolus_prog (REQ 35/36); inhibits (REQ 38)";
128
127
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.9"; }
@@ -133,9 +132,9 @@ package memo_examples_gpca_pump_gpca_behavior_modes {
133
132
 
134
133
  // ── Mode transitions (CriSys §4.1, 1:1 with source REQs) ──
135
134
  transition trSystemStart first modeOFF then modeON.modeIDLE {
135
+ @MemoIdentity { :>> label = "SystemStartToIdle"; }
136
136
  @TransitionRecord {
137
137
  :>> id = "TR-001";
138
- :>> name = "SystemStartToIdle";
139
138
  :>> trigger = "System_start_prog commanded";
140
139
  :>> guardSummary = "none in source (MEMO extension REQ-X-02 additionally gates therapy on POST)";
141
140
  :>> effectSummary = "A.4 variables set to default values (REQ 4)";
@@ -143,9 +142,9 @@ package memo_examples_gpca_pump_gpca_behavior_modes {
143
142
  }
144
143
  }
145
144
  transition trSystemStop first modeON then modeOFF {
145
+ @MemoIdentity { :>> label = "SystemStopToOff"; }
146
146
  @TransitionRecord {
147
147
  :>> id = "TR-002";
148
- :>> name = "SystemStopToOff";
149
148
  :>> trigger = "System_stop_prog commanded";
150
149
  :>> guardSummary = "none — allowed from any ON sub-mode";
151
150
  :>> effectSummary = "stop infusion, cancel all notifications (REQ 5)";
@@ -153,9 +152,9 @@ package memo_examples_gpca_pump_gpca_behavior_modes {
153
152
  }
154
153
  }
155
154
  transition trStartTherapy first modeON.modeIDLE then modeON.modeTHERAPY.modeACTIVE.modeBASAL {
155
+ @MemoIdentity { :>> label = "ConfirmedInitiateToBasal"; }
156
156
  @TransitionRecord {
157
157
  :>> id = "TR-003";
158
- :>> name = "ConfirmedInitiateToBasal";
159
158
  :>> trigger = "second Infusion_initiate_prog (confirmation per REQ 9)";
160
159
  :>> guardSummary = "Inhibited_Infusion_macro = FALSE; saved prescription available (REQ 7)";
161
160
  :>> effectSummary = "Actual_Infusion_Duration_macro = 0; Actual_Volume_Infused_macro = 0 (REQ 12)";
@@ -163,9 +162,9 @@ package memo_examples_gpca_pump_gpca_behavior_modes {
163
162
  }
164
163
  }
165
164
  transition trInitiateWhileInhibited first modeON.modeIDLE then modeON.modeTHERAPY.modePAUSED {
165
+ @MemoIdentity { :>> label = "ConfirmedInitiateWhileInhibitedToPaused"; }
166
166
  @TransitionRecord {
167
167
  :>> id = "TR-004";
168
- :>> name = "ConfirmedInitiateWhileInhibitedToPaused";
169
168
  :>> trigger = "second Infusion_initiate_prog (confirmation per REQ 9)";
170
169
  :>> guardSummary = "Inhibited_Infusion_macro = TRUE";
171
170
  :>> effectSummary = "macros reset; 'Infusion Inhibited' actions per REQ 59 (REQ 13)";
@@ -173,9 +172,9 @@ package memo_examples_gpca_pump_gpca_behavior_modes {
173
172
  }
174
173
  }
175
174
  transition trAlarmPause first modeON.modeTHERAPY then modeON.modeTHERAPY.modePAUSED {
175
+ @MemoIdentity { :>> label = "TherapyAlarmToPausedKvo"; }
176
176
  @TransitionRecord {
177
177
  :>> id = "TR-005";
178
- :>> name = "TherapyAlarmToPausedKvo";
179
178
  :>> trigger = "over-infusion flow rate (REQ 19), over-infusion VTBI (REQ 20), air embolism (REQ 21), reverse delivery (REQ 22), or empty reservoir (REQ 23) condition";
180
179
  :>> guardSummary = "none — unconditional from any THERAPY sub-mode";
181
180
  :>> effectSummary = "REQ 59 actions for the notification; PAUSED delivers FlowRate_kvo_hd keep-vein-open flow (REQ 43), not zero";
@@ -183,9 +182,9 @@ package memo_examples_gpca_pump_gpca_behavior_modes {
183
182
  }
184
183
  }
185
184
  transition trInfusionComplete first modeON.modeTHERAPY.modeACTIVE then modeON.modeIDLE {
185
+ @MemoIdentity { :>> label = "InfusionCompleteToIdle"; }
186
186
  @TransitionRecord {
187
187
  :>> id = "TR-006";
188
- :>> name = "InfusionCompleteToIdle";
189
188
  :>> trigger = "Actual_Infusion_Duration_macro >= Duration_total_prog OR Actual_Volume_Infused_macro >= VTBI_total_prog";
190
189
  :>> guardSummary = "none";
191
190
  :>> effectSummary = "'Infusion Complete' actions per REQ 59; completion record in operational log (REQ 79)";
@@ -193,9 +192,9 @@ package memo_examples_gpca_pump_gpca_behavior_modes {
193
192
  }
194
193
  }
195
194
  transition trManualInhibit first modeON.modeTHERAPY.modeACTIVE then modeON.modeTHERAPY.modePAUSED {
195
+ @MemoIdentity { :>> label = "ManualInhibitToPaused"; }
196
196
  @TransitionRecord {
197
197
  :>> id = "TR-007";
198
- :>> name = "ManualInhibitToPaused";
199
198
  :>> trigger = "Infusion_inhibit_prog commanded";
200
199
  :>> guardSummary = "none";
201
200
  :>> effectSummary = "'Infusion Manually Inhibited' actions per REQ 59";
@@ -203,9 +202,9 @@ package memo_examples_gpca_pump_gpca_behavior_modes {
203
202
  }
204
203
  }
205
204
  transition trAllInhibited first modeON.modeTHERAPY.modeACTIVE then modeON.modeTHERAPY.modePAUSED {
205
+ @MemoIdentity { :>> label = "AllInhibitedToPaused"; }
206
206
  @TransitionRecord {
207
207
  :>> id = "TR-008";
208
- :>> name = "AllInhibitedToPaused";
209
208
  :>> trigger = "Inhibited_Infusion_macro AND Inhibited_Bolus_macro AND Inhibited_PatientBolus_macro all TRUE";
210
209
  :>> guardSummary = "none";
211
210
  :>> effectSummary = "therapy paused at KVO flow";
@@ -213,9 +212,9 @@ package memo_examples_gpca_pump_gpca_behavior_modes {
213
212
  }
214
213
  }
215
214
  transition trSquareBolus first modeON.modeTHERAPY.modeACTIVE.modeBASAL then modeON.modeTHERAPY.modeACTIVE.modeSQUARE {
215
+ @MemoIdentity { :>> label = "ScheduledSquareBolusStart"; }
216
216
  @TransitionRecord {
217
217
  :>> id = "TR-009";
218
- :>> name = "ScheduledSquareBolusStart";
219
218
  :>> trigger = "scheduled SQUARE BOLUS start — auto-initiates every Interval_sbolus_prog for Duration_sbolus_prog during Duration_total_prog (REQ 24); no external trigger";
220
219
  :>> guardSummary = "Inhibited_Bolus_macro = FALSE AND Inhibited_Infusion_macro = FALSE AND (no BolusRequest_prog OR a REQ 25 ignore condition holds)";
221
220
  :>> effectSummary = "FlowRate_Mode_macro = FlowRate_sbolus_prog";
@@ -223,9 +222,9 @@ package memo_examples_gpca_pump_gpca_behavior_modes {
223
222
  }
224
223
  }
225
224
  transition trPatientBolus first modeON.modeTHERAPY.modeACTIVE.modeBASAL then modeON.modeTHERAPY.modeACTIVE.modePBOLUS {
225
+ @MemoIdentity { :>> label = "BasalToPatientBolus"; }
226
226
  @TransitionRecord {
227
227
  :>> id = "TR-010";
228
- :>> name = "BasalToPatientBolus";
229
228
  :>> trigger = "BolusRequest_prog";
230
229
  :>> guardSummary = "none of the REQ 25 ignore conditions hold (inhibits, lockout, bolus count, already in PATIENT BOLUS)";
231
230
  :>> effectSummary = "FlowRate_Mode_macro = FlowRate_pbolus_prog";
@@ -233,9 +232,9 @@ package memo_examples_gpca_pump_gpca_behavior_modes {
233
232
  }
234
233
  }
235
234
  transition trSquareToPatientBolus first modeON.modeTHERAPY.modeACTIVE.modeSQUARE then modeON.modeTHERAPY.modeACTIVE.modePBOLUS {
235
+ @MemoIdentity { :>> label = "SquareBolusToPatientBolus"; }
236
236
  @TransitionRecord {
237
237
  :>> id = "TR-011";
238
- :>> name = "SquareBolusToPatientBolus";
239
238
  :>> trigger = "BolusRequest_prog";
240
239
  :>> guardSummary = "none of the REQ 25 ignore conditions hold";
241
240
  :>> effectSummary = "patient bolus interrupts the square bolus; FlowRate_Mode_macro = FlowRate_pbolus_prog";
@@ -243,9 +242,9 @@ package memo_examples_gpca_pump_gpca_behavior_modes {
243
242
  }
244
243
  }
245
244
  transition trSquareToBasal first modeON.modeTHERAPY.modeACTIVE.modeSQUARE then modeON.modeTHERAPY.modeACTIVE.modeBASAL {
245
+ @MemoIdentity { :>> label = "SquareBolusEndToBasal"; }
246
246
  @TransitionRecord {
247
247
  :>> id = "TR-012";
248
- :>> name = "SquareBolusEndToBasal";
249
248
  :>> trigger = "Inhibited_Bolus_macro = TRUE or scheduled square bolus end (REQ 24)";
250
249
  :>> guardSummary = "Inhibited_Infusion_macro = FALSE AND (no BolusRequest_prog OR a REQ 25 ignore condition holds)";
251
250
  :>> effectSummary = "FlowRate_Mode_macro = FlowRate_basal_prog";
@@ -253,9 +252,9 @@ package memo_examples_gpca_pump_gpca_behavior_modes {
253
252
  }
254
253
  }
255
254
  transition trPatientBolusToBasal first modeON.modeTHERAPY.modeACTIVE.modePBOLUS then modeON.modeTHERAPY.modeACTIVE.modeBASAL {
255
+ @MemoIdentity { :>> label = "PatientBolusEndToBasal"; }
256
256
  @TransitionRecord {
257
257
  :>> id = "TR-013";
258
- :>> name = "PatientBolusEndToBasal";
259
258
  :>> trigger = "Inhibited_PatientBolus_macro = TRUE or patient-bolus duration >= Duration_pbolus_prog";
260
259
  :>> guardSummary = "Inhibited_Infusion_macro = FALSE AND (no square bolus scheduled in progress OR (square bolus scheduled AND Inhibited_Bolus_macro = TRUE))";
261
260
  :>> effectSummary = "patient bolus delivery stopped; FlowRate_Mode_macro = FlowRate_basal_prog";
@@ -263,9 +262,9 @@ package memo_examples_gpca_pump_gpca_behavior_modes {
263
262
  }
264
263
  }
265
264
  transition trPatientBolusToSquare first modeON.modeTHERAPY.modeACTIVE.modePBOLUS then modeON.modeTHERAPY.modeACTIVE.modeSQUARE {
265
+ @MemoIdentity { :>> label = "PatientBolusEndToSquareBolus"; }
266
266
  @TransitionRecord {
267
267
  :>> id = "TR-014";
268
- :>> name = "PatientBolusEndToSquareBolus";
269
268
  :>> trigger = "Inhibited_PatientBolus_macro = TRUE or patient-bolus duration >= Duration_pbolus_prog";
270
269
  :>> guardSummary = "Inhibited_Infusion_macro = FALSE AND a square bolus is scheduled to be in progress AND Inhibited_Bolus_macro = FALSE";
271
270
  :>> effectSummary = "patient bolus delivery stopped; scheduled square bolus resumes";
@@ -273,9 +272,9 @@ package memo_examples_gpca_pump_gpca_behavior_modes {
273
272
  }
274
273
  }
275
274
  transition trBasalInhibit first modeON.modeTHERAPY.modeACTIVE.modeBASAL then modeON.modeTHERAPY.modePAUSED {
275
+ @MemoIdentity { :>> label = "BasalInhibitToPaused"; }
276
276
  @TransitionRecord {
277
277
  :>> id = "TR-015";
278
- :>> name = "BasalInhibitToPaused";
279
278
  :>> trigger = "Inhibited_Infusion_macro = TRUE";
280
279
  :>> guardSummary = "none";
281
280
  :>> effectSummary = "therapy paused at KVO flow";
@@ -283,9 +282,9 @@ package memo_examples_gpca_pump_gpca_behavior_modes {
283
282
  }
284
283
  }
285
284
  transition trPatientBolusInhibit first modeON.modeTHERAPY.modeACTIVE.modePBOLUS then modeON.modeTHERAPY.modePAUSED {
285
+ @MemoIdentity { :>> label = "PatientBolusInhibitToPaused"; }
286
286
  @TransitionRecord {
287
287
  :>> id = "TR-016";
288
- :>> name = "PatientBolusInhibitToPaused";
289
288
  :>> trigger = "Inhibited_PatientBolus_macro = TRUE AND Inhibited_Infusion_macro = TRUE";
290
289
  :>> guardSummary = "none";
291
290
  :>> effectSummary = "therapy paused at KVO flow";
@@ -293,9 +292,9 @@ package memo_examples_gpca_pump_gpca_behavior_modes {
293
292
  }
294
293
  }
295
294
  transition trSquareInhibit first modeON.modeTHERAPY.modeACTIVE.modeSQUARE then modeON.modeTHERAPY.modePAUSED {
295
+ @MemoIdentity { :>> label = "SquareBolusInhibitToPaused"; }
296
296
  @TransitionRecord {
297
297
  :>> id = "TR-017";
298
- :>> name = "SquareBolusInhibitToPaused";
299
298
  :>> trigger = "Inhibited_Bolus_macro = TRUE AND Inhibited_Infusion_macro = TRUE";
300
299
  :>> guardSummary = "none";
301
300
  :>> effectSummary = "therapy paused at KVO flow";
@@ -303,9 +302,9 @@ package memo_examples_gpca_pump_gpca_behavior_modes {
303
302
  }
304
303
  }
305
304
  transition trResume first modeON.modeTHERAPY.modePAUSED then modeON.modeTHERAPY.modeACTIVE.modeBASAL {
305
+ @MemoIdentity { :>> label = "PausedResumeToBasal"; }
306
306
  @TransitionRecord {
307
307
  :>> id = "TR-018";
308
- :>> name = "PausedResumeToBasal";
309
308
  :>> trigger = "Infusion_initiate_prog";
310
309
  :>> guardSummary = "Inhibited_Infusion_macro = FALSE (while TRUE, no transition occurs — REQ 45)";
311
310
  :>> effectSummary = "basal flow re-established";
@@ -313,9 +312,9 @@ package memo_examples_gpca_pump_gpca_behavior_modes {
313
312
  }
314
313
  }
315
314
  transition trPausedStop first modeON.modeTHERAPY.modePAUSED then modeON.modeIDLE {
315
+ @MemoIdentity { :>> label = "PausedInhibitToIdle"; }
316
316
  @TransitionRecord {
317
317
  :>> id = "TR-019";
318
- :>> name = "PausedInhibitToIdle";
319
318
  :>> trigger = "Infusion_inhibit_prog commanded";
320
319
  :>> guardSummary = "none";
321
320
  :>> effectSummary = "'Infusion Stopped Manually' actions per REQ 59";
@@ -331,23 +330,19 @@ package memo_examples_gpca_pump_gpca_behavior_modes {
331
330
  // The individual configurations remain ordinary model elements, so their
332
331
  // active mode is navigable as well as visible in the choice-point edge.
333
332
  part basalConfiguration : ModeConfiguration {
334
- @MemoIdentity { :>> providedId = "CFG-001"; }
335
- attribute :>> name = "BasalTherapyConfiguration";
333
+ @MemoIdentity { :>> providedId = "CFG-001"; :>> label = "BasalTherapyConfiguration"; }
336
334
  ref :>> activeMode = topLevelModeMachine.modeON.modeTHERAPY.modeACTIVE.modeBASAL;
337
335
  }
338
336
  part squareBolusConfiguration : ModeConfiguration {
339
337
  @MemoIdentity { :>> providedId = "CFG-002"; }
340
- attribute :>> name = "SquareBolusConfiguration";
341
338
  ref :>> activeMode = topLevelModeMachine.modeON.modeTHERAPY.modeACTIVE.modeSQUARE;
342
339
  }
343
340
  part patientBolusConfiguration : ModeConfiguration {
344
341
  @MemoIdentity { :>> providedId = "CFG-003"; }
345
- attribute :>> name = "PatientBolusConfiguration";
346
342
  ref :>> activeMode = topLevelModeMachine.modeON.modeTHERAPY.modeACTIVE.modePBOLUS;
347
343
  }
348
344
  part pausedConfiguration : ModeConfiguration {
349
- @MemoIdentity { :>> providedId = "CFG-004"; }
350
- attribute :>> name = "PausedKvoConfiguration";
345
+ @MemoIdentity { :>> providedId = "CFG-004"; :>> label = "PausedKvoConfiguration"; }
351
346
  ref :>> activeMode = topLevelModeMachine.modeON.modeTHERAPY.modePAUSED;
352
347
  }
353
348
  variation part activeTherapyConfiguration : ModeConfiguration[1] {
@@ -358,41 +353,36 @@ package memo_examples_gpca_pump_gpca_behavior_modes {
358
353
  }
359
354
 
360
355
  // ── Behavior properties and timing constraints ──────────────
361
- part propAlarmStopsSameStep : BehaviorProperty {
362
- @MemoIdentity { :>> providedId = "BP-002"; }
363
- attribute :>> name = "AlarmResponseSameStepKvo";
356
+ requirement propAlarmStopsSameStep : BehaviorProperty {
357
+ @MemoIdentity { :>> providedId = "BP-002"; :>> label = "AlarmResponseSameStepKvo"; }
364
358
  attribute :>> propertyKind = BehaviorPropertyKind::safetyProperty;
365
359
  attribute :>> languageKind = PropertyLanguageKind::pseudoFormal;
366
360
  attribute :>> formalExpression = "ALARM.ALARM_OUT -> IM.ALARM_IN is an AADL immediate connection: when an infusion-inhibiting notification asserts, Infusion_Manager limits Commanded_Flow_Rate <= FlowRate_kvo_hd in the same execution step";
367
361
  @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, GPCA_SW.aadl (ALARM_to_IM immediate) and AGREE flow <= KVO guarantees"; }
368
362
  }
369
- part propPausedNoResumeWhileInhibited : BehaviorProperty {
370
- @MemoIdentity { :>> providedId = "BP-004"; }
371
- attribute :>> name = "PausedNoTransitionWhileInhibited";
363
+ requirement propPausedNoResumeWhileInhibited : BehaviorProperty {
364
+ @MemoIdentity { :>> providedId = "BP-004"; :>> label = "PausedNoTransitionWhileInhibited"; }
372
365
  attribute :>> propertyKind = BehaviorPropertyKind::stateInvariant;
373
366
  attribute :>> languageKind = PropertyLanguageKind::pseudoFormal;
374
367
  attribute :>> formalExpression = "in PAUSED: Infusion_initiate_prog AND Inhibited_Infusion_macro = TRUE => mode unchanged";
375
368
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.10.1 (REQ 45)"; }
376
369
  }
377
- part propModeTimeoutActions : BehaviorProperty {
378
- @MemoIdentity { :>> providedId = "BP-005"; }
379
- attribute :>> name = "IdleAndPausedTimeoutActions";
370
+ requirement propModeTimeoutActions : BehaviorProperty {
371
+ @MemoIdentity { :>> providedId = "BP-005"; :>> label = "IdleAndPausedTimeoutActions"; }
380
372
  attribute :>> propertyKind = BehaviorPropertyKind::transitionRule;
381
373
  attribute :>> languageKind = PropertyLanguageKind::pseudoFormal;
382
374
  attribute :>> formalExpression = "time in IDLE > Max_IDLE_Duration_const => REQ 59 'IDLE Time' actions; time in PAUSED > Max_PAUSED_Duration_const => REQ 59 'PAUSED Time' actions (notification actions, not mode transitions)";
383
375
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.4.1 (REQ 15) and §4.1.10.1 (REQ 44)"; }
384
376
  }
385
- part propLockoutTimerMonotonic : BehaviorProperty {
386
- @MemoIdentity { :>> providedId = "BP-003"; }
387
- attribute :>> name = "LockoutTimerNeverShortened";
377
+ requirement propLockoutTimerMonotonic : BehaviorProperty {
378
+ @MemoIdentity { :>> providedId = "BP-003"; :>> label = "LockoutTimerNeverShortened"; }
388
379
  attribute :>> propertyKind = BehaviorPropertyKind::stateInvariant;
389
380
  attribute :>> languageKind = PropertyLanguageKind::pseudoFormal;
390
381
  attribute :>> formalExpression = "lockout_remaining decreases only with elapsed time; no input path resets it early";
391
382
  @MemoIdentity { :>> sourceReference = "MEMO extension — supports the REQ 25.3 lockout ignore condition; invariant not stated by the source"; }
392
383
  }
393
- part tcAlarmLatency : TimingConstraint {
394
- @MemoIdentity { :>> providedId = "TC-001"; }
395
- attribute :>> name = "AlarmToSafeStateLatency";
384
+ requirement tcAlarmLatency : TimingConstraint {
385
+ @MemoIdentity { :>> providedId = "TC-001"; :>> label = "AlarmToSafeStateLatency"; }
396
386
  attribute :>> constraintKind = TimingConstraintKind::latency;
397
387
  attribute :>> minMs = "0";
398
388
  attribute :>> maxMs = "20";
@@ -400,9 +390,8 @@ package memo_examples_gpca_pump_gpca_behavior_modes {
400
390
  attribute :>> verificationMethod = MemoVerificationMethodKind::modelChecking;
401
391
  @MemoIdentity { :>> sourceReference = "MEMO extension — illustrative wall-clock budget; the source specifies synchronous same-step (immediate) semantics with no timing figures"; }
402
392
  }
403
- part tcBolusResponse : TimingConstraint {
404
- @MemoIdentity { :>> providedId = "TC-002"; }
405
- attribute :>> name = "BolusRequestResponseLatency";
393
+ requirement tcBolusResponse : TimingConstraint {
394
+ @MemoIdentity { :>> providedId = "TC-002"; :>> label = "BolusRequestResponseLatency"; }
406
395
  attribute :>> constraintKind = TimingConstraintKind::latency;
407
396
  attribute :>> minMs = "0";
408
397
  attribute :>> maxMs = "100";
@@ -410,17 +399,15 @@ package memo_examples_gpca_pump_gpca_behavior_modes {
410
399
  attribute :>> verificationMethod = MemoVerificationMethodKind::test;
411
400
  @MemoIdentity { :>> sourceReference = "MEMO extension — illustrative wall-clock budget; not specified by the source"; }
412
401
  }
413
- part tcWatchdogTimeout : TimingConstraint {
414
- @MemoIdentity { :>> providedId = "TC-003"; }
415
- attribute :>> name = "WatchdogTimeout";
402
+ requirement tcWatchdogTimeout : TimingConstraint {
403
+ @MemoIdentity { :>> providedId = "TC-003"; :>> label = "WatchdogTimeout"; }
416
404
  attribute :>> constraintKind = TimingConstraintKind::deadline;
417
405
  attribute :>> minMs = "40";
418
406
  attribute :>> maxMs = "60";
419
407
  // The deadline is a claim about the element that kicks the watchdog, so
420
- // the reference is the software module, not the requirement it supports.
421
- // `referenceElement` is a MemoPart; a requirement is a requirement def
422
- // and does not conform to it — that link is REQ-X-08's own trace.
423
- ref :>> referenceElement = gpcaDevice.gpcaSoftware.systemMonitor;
408
+ // the reference is the software module, not the requirement it supports;
409
+ // that link is REQ-X-08's own trace.
410
+ ref :>> referenceElement = gpcaSoftware.systemMonitor;
424
411
  attribute :>> verificationMethod = MemoVerificationMethodKind::test;
425
412
  @MemoIdentity { :>> sourceReference = "MEMO extension — supports extension requirement REQ-X-08; watchdog not specified by the source"; }
426
413
  }