@memoarchitect/ontology 0.7.0 → 0.8.24

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 (270) hide show
  1. package/README.md +4 -2
  2. package/examples/connected-patient-monitor/memo.package.yaml +3 -0
  3. package/examples/connected-patient-monitor/model/catalog/connected_patient_monitor.sysml +1 -1
  4. package/examples/connected-patient-monitor/model/catalog/viewpoints/unassigned/views/connected_patient_monitor_overview.sysml +1 -1
  5. package/examples/embedded-infusion-pump/memo.package.yaml +3 -0
  6. package/examples/embedded-infusion-pump/model/catalog/embedded_infusion_pump.sysml +8 -6
  7. package/examples/embedded-infusion-pump/model/catalog/viewpoints/unassigned/views/embedded_infusion_pump_overview.sysml +1 -1
  8. package/examples/functional-logical-physical/memo.package.yaml +3 -0
  9. package/examples/functional-logical-physical/model/catalog/functional_logical_physical.sysml +6 -6
  10. package/examples/functional-logical-physical/model/catalog/viewpoints/unassigned/views/functional_logical_physical_overview.sysml +1 -1
  11. package/examples/gpca-pump/memo.package.yaml +3 -0
  12. package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +18 -8
  13. package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +341 -99
  14. package/examples/gpca-pump/model/catalog/gpca_behavior_actions.sysml +25 -11
  15. package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +328 -271
  16. package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +52 -11
  17. package/examples/gpca-pump/model/catalog/gpca_context.sysml +14 -3
  18. package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +8 -5
  19. package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +175 -259
  20. package/examples/gpca-pump/model/catalog/gpca_operational.sysml +97 -103
  21. package/examples/gpca-pump/model/catalog/gpca_physical.sysml +5 -10
  22. package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +101 -100
  23. package/examples/gpca-pump/model/catalog/gpca_standards.sysml +161 -0
  24. package/examples/gpca-pump/model/catalog/gpca_system.sysml +17 -17
  25. package/examples/gpca-pump/model/catalog/gpca_trace.sysml +274 -334
  26. package/examples/gpca-pump/model/catalog/gpca_verification.sysml +115 -35
  27. package/examples/gpca-pump/model/catalog/project.sysml +5 -0
  28. package/examples/gpca-pump/model/catalog/viewpoints/context/views/context_system_context_view.sysml +2 -4
  29. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/cybersecurity_cybersecurity_view.sysml +2 -4
  30. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_cyber_assessment_view.sysml +1 -4
  31. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_threat_model_view.sysml +2 -5
  32. package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_allocation_view.sysml +1 -3
  33. package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_browser_view.sysml +1 -3
  34. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/behavior_action_flow_view.sysml +1 -3
  35. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/document_architecture_description_view.sysml +4 -7
  36. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_device_interconnect_view.sysml +3 -5
  37. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_logical_architecture_view.sysml +1 -3
  38. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_mode_state_view.sysml +2 -4
  39. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_system_decomposition_view.sysml +1 -3
  40. package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_scenario_sequence_view.sysml +2 -4
  41. package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_use_case_view.sysml +2 -4
  42. package/examples/gpca-pump/model/catalog/viewpoints/physical/views/physical_physical_bom_view.sysml +1 -3
  43. package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/document_dhf_index_view.sysml +5 -8
  44. package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/requirements_requirements_trace_view.sysml +1 -3
  45. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_hazard_analysis_view.sysml +6 -6
  46. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_rmf_view.sysml +5 -6
  47. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_fmea_view.sysml +2 -4
  48. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_risk_chain_view.sysml +1 -3
  49. package/examples/gpca-pump/model/catalog/viewpoints/software/views/document_sdd_view.sysml +2 -5
  50. package/examples/gpca-pump/model/catalog/viewpoints/software/views/software_software_architecture_view.sysml +3 -5
  51. package/examples/gpca-pump/model/catalog/viewpoints/usability/views/document_usability_view.sysml +5 -6
  52. package/examples/gpca-pump/model/catalog/viewpoints/verification/views/document_vv_view.sysml +5 -6
  53. package/examples/gpca-pump/model/catalog/viewpoints/verification/views/verification_verification_coverage_view.sysml +2 -4
  54. package/examples/ivd-laboratory-system/memo.package.yaml +3 -0
  55. package/examples/ivd-laboratory-system/model/catalog/ivd_laboratory_system.sysml +1 -1
  56. package/examples/ivd-laboratory-system/model/catalog/viewpoints/unassigned/views/ivd_laboratory_system_overview.sysml +1 -1
  57. package/examples/manual-surgical-instrument/memo.package.yaml +3 -0
  58. package/examples/manual-surgical-instrument/model/catalog/manual_surgical_instrument.sysml +4 -3
  59. package/examples/manual-surgical-instrument/model/catalog/viewpoints/unassigned/views/manual_surgical_instrument_overview.sysml +1 -1
  60. package/examples/multidimensional-layers/memo.package.yaml +3 -0
  61. package/examples/multidimensional-layers/model/catalog/multidimensional_layers.sysml +6 -2
  62. package/examples/multidimensional-layers/model/catalog/viewpoints/unassigned/views/multidimensional_layers_overview.sysml +0 -1
  63. package/examples/nested-architecture-dsm/memo.package.yaml +3 -0
  64. package/examples/nested-architecture-dsm/model/catalog/architecture/functional/functions.sysml +133 -128
  65. package/examples/nested-architecture-dsm/model/catalog/architecture/logical/structure.sysml +139 -157
  66. package/examples/nested-architecture-dsm/model/catalog/assurance/verification_validation/verification_validation.sysml +56 -33
  67. package/examples/nested-architecture-dsm/model/catalog/traces.sysml +25 -26
  68. package/examples/reusable-instrument/memo.package.yaml +3 -0
  69. package/examples/reusable-instrument/model/catalog/reusable_instrument.sysml +16 -23
  70. package/examples/reusable-instrument/model/catalog/viewpoints/unassigned/views/reusable_instrument_overview.sysml +0 -1
  71. package/examples/ros-mobile-robot/README.md +40 -0
  72. package/examples/ros-mobile-robot/memo.package.yaml +3 -0
  73. package/examples/ros-mobile-robot/model/catalog/project.sysml +33 -0
  74. package/examples/ros-mobile-robot/model/catalog/ros_mobile_robot.sysml +296 -0
  75. package/examples/ros-mobile-robot/model/catalog/viewpoints/unassigned/viewpoint.sysml +7 -0
  76. package/examples/ros-mobile-robot/model/catalog/viewpoints/unassigned/views/ros_mobile_robot_overview.sysml +12 -0
  77. package/examples/software-only-medical-device/memo.package.yaml +3 -0
  78. package/examples/software-only-medical-device/model/catalog/project.sysml +4 -0
  79. package/examples/software-only-medical-device/model/catalog/software_only_medical_device.sysml +12 -6
  80. package/examples/software-only-medical-device/model/catalog/viewpoints/unassigned/views/software_only_medical_device_overview.sysml +0 -1
  81. package/examples/surgical-closure-workflow/memo.package.yaml +3 -0
  82. package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +58 -75
  83. package/examples/surgical-closure-workflow/model/catalog/viewpoints/unassigned/views/surgical_closure_workflow_overview.sysml +0 -1
  84. package/examples/surgical-robot/memo.package.yaml +3 -0
  85. package/examples/surgical-robot/model/catalog/surgical_robot.sysml +1 -1
  86. package/examples/surgical-robot/model/catalog/viewpoints/unassigned/views/surgical_robot_overview.sysml +0 -1
  87. package/examples/sysml-diagram-samples/memo.package.yaml +2 -0
  88. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/action_flow_view.sysml +12 -18
  89. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.sysml +8 -11
  90. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/functional_flow_view.sysml +43 -68
  91. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.sysml +57 -68
  92. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.sysml +40 -70
  93. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/requirements_view.sysml +4 -8
  94. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/standard_activity_view.sysml +1 -20
  95. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/state_transition_view.sysml +52 -84
  96. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/tree_view.sysml +22 -33
  97. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/use_case_view.sysml +13 -10
  98. package/examples/temperature-alarm/memo.package.yaml +3 -0
  99. package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +28 -25
  100. package/examples/temperature-alarm/model/catalog/viewpoints/unassigned/views/temperature_alarm_overview.sysml +0 -1
  101. package/examples/ui-screen-regions/memo.package.yaml +3 -0
  102. package/examples/ui-screen-regions/model/catalog/architecture/functional/functions.sysml +57 -33
  103. package/examples/ui-screen-regions/model/catalog/architecture/implementation/ui.sysml +102 -79
  104. package/examples/ui-screen-regions/model/catalog/assurance/safety_risk/risk.sysml +5 -5
  105. package/examples/ui-screen-regions/model/catalog/assurance/verification_validation/verification_validation.sysml +21 -6
  106. package/examples/ui-screen-regions/model/catalog/relationships.sysml +8 -0
  107. package/examples/ui-screen-regions/model/catalog/traces.sysml +28 -125
  108. package/examples/ui-screen-regions/model/catalog/viewpoints/functional/views/ui_functional_tree.sysml +2 -3
  109. package/examples/ui-screen-regions/model/catalog/viewpoints/requirements/views/ui_requirements_trace.sysml +1 -2
  110. package/examples/ui-screen-regions/model/catalog/viewpoints/risk/views/ui_risk_chain.sysml +1 -2
  111. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/main_screen_layout.sysml +1 -2
  112. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/settings_screen_layout.sysml +1 -2
  113. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/ui_region_trace.sysml +1 -2
  114. package/extensions/LICENSES/MIT.txt +19 -0
  115. package/extensions/README.md +94 -0
  116. package/extensions/aadl/memo.package.yaml +18 -0
  117. package/extensions/aadl/src/aadl_extension.sysml +6 -0
  118. package/extensions/aadl/src/correspondence/memo_aadl_correspondence.sysml +147 -0
  119. package/extensions/aadl/src/methodology/aadl_methodology.sysml +17 -0
  120. package/extensions/aadl/src/runtime/memo_aadl_runtime.sysml +56 -0
  121. package/extensions/cloud/memo.package.yaml +18 -0
  122. package/extensions/cloud/src/cloud_extension.sysml +44 -0
  123. package/extensions/cloud/src/methodology/cloud_methodology.sysml +17 -0
  124. package/extensions/container/memo.package.yaml +18 -0
  125. package/extensions/container/src/container_extension.sysml +37 -0
  126. package/extensions/container/src/methodology/container_methodology.sysml +17 -0
  127. package/extensions/messaging/memo.package.yaml +18 -0
  128. package/extensions/messaging/src/messaging_extension.sysml +64 -0
  129. package/extensions/messaging/src/methodology/messaging_methodology.sysml +17 -0
  130. package/extensions/ros/memo.package.yaml +18 -0
  131. package/extensions/ros/src/methodology/ros_methodology.sysml +25 -0
  132. package/extensions/ros/src/ros_extension.sysml +200 -0
  133. package/extensions/template/src/extension.sysml +37 -0
  134. package/memo.manifest.yaml +13 -2
  135. package/methodologies/default/memo.package.yaml +1 -1
  136. package/methodologies/gpca/memo.package.yaml +1 -1
  137. package/ontology/memo.package.yaml +1 -1
  138. package/package.json +5 -3
  139. package/profile/memo.package.yaml +1 -1
  140. package/src/architecture/decisions/memo_decisions.sysml +23 -2
  141. package/src/architecture/functional/behavior/memo_behavior.sysml +51 -23
  142. package/src/architecture/functional/constraints/memo_constraints.sysml +3 -2
  143. package/src/architecture/functional/functions/memo_functions.sysml +93 -36
  144. package/src/architecture/implementation/hardware/common/memo_hardware_common.sysml +2 -2
  145. package/src/architecture/implementation/software/runtime/memo_software_runtime.sysml +46 -22
  146. package/src/architecture/implementation/software/structure/memo_software_structure.sysml +40 -13
  147. package/src/architecture/implementation/ui/memo_ui.sysml +83 -43
  148. package/src/architecture/logical/interfaces/memo_interfaces.sysml +64 -12
  149. package/src/architecture/logical/structure/memo_logical_structure.sysml +26 -25
  150. package/src/architecture/operational/activities/memo_activities.sysml +27 -29
  151. package/src/architecture/operational/context/actors/memo_actors.sysml +8 -10
  152. package/src/architecture/operational/context/stakeholders/memo_stakeholders.sysml +16 -33
  153. package/src/architecture/operational/context/use_context/memo_use_context.sysml +42 -17
  154. package/src/architecture/operational/scenarios/memo_scenarios.sysml +36 -84
  155. package/src/architecture/operational/structure/memo_operational.sysml +42 -13
  156. package/src/architecture/operational/use_cases/memo_use_cases.sysml +35 -27
  157. package/src/architecture/operational/workflows/memo_workflows.sysml +45 -28
  158. package/src/architecture/realization/deployment/memo_deployment.sysml +115 -20
  159. package/src/architecture/realization/physical/memo_physical_architecture.sysml +29 -4
  160. package/src/artifacts/configuration_management/memo_configuration_management.sysml +16 -0
  161. package/src/artifacts/core/memo_controlled_artifacts.sysml +3 -1
  162. package/src/artifacts/standards/cfr_21_820.sysml +116 -0
  163. package/src/artifacts/standards/fda_cybersecurity_2023.sysml +80 -0
  164. package/src/artifacts/standards/iec_60601_1.sysml +149 -0
  165. package/src/artifacts/standards/iec_60601_1_2.sysml +56 -0
  166. package/src/artifacts/standards/iec_60812.sysml +51 -0
  167. package/src/artifacts/standards/iec_62304.sysml +210 -0
  168. package/src/artifacts/standards/iec_62366_1.sysml +113 -0
  169. package/src/artifacts/standards/iec_81001_5_1.sysml +84 -0
  170. package/src/artifacts/standards/iso_13485.sysml +113 -0
  171. package/src/artifacts/standards/iso_14971.sysml +94 -0
  172. package/src/artifacts/standards/iso_iec_ieee_42010.sysml +42 -0
  173. package/src/artifacts/standards/memo_artifacts_standards_traceability.sysml +132 -0
  174. package/src/artifacts/templates/dhf/21cfr820/design-input.md +1 -1
  175. package/src/artifacts/templates/dhf/21cfr820/design-output.md +5 -5
  176. package/src/artifacts/templates/dhf/21cfr820/design-review.md +1 -1
  177. package/src/artifacts/templates/dhf/21cfr820/design-validation.md +2 -2
  178. package/src/artifacts/templates/dhf/21cfr820/design-verification.md +2 -2
  179. package/src/artifacts/templates/dhf/21cfr820/dhf-index.md +2 -2
  180. package/src/artifacts/templates/dhf/21cfr820/transfer-plan.md +1 -1
  181. package/src/artifacts/templates/dhf/21cfr820/user-needs.md +1 -1
  182. package/src/artifacts/templates/dhf/21cfr820/vv-plan.md +3 -3
  183. package/src/artifacts/templates/dhf/21cfr820/vv-report.md +4 -4
  184. package/src/artifacts/templates/dhf/fda-cybersecurity/incident-response.md +1 -1
  185. package/src/artifacts/templates/dhf/fda-cybersecurity/postmarket-surveillance.md +3 -2
  186. package/src/artifacts/templates/dhf/fda-cybersecurity/security-arch.md +2 -2
  187. package/src/artifacts/templates/dhf/fda-cybersecurity/threat-model.md +4 -4
  188. package/src/artifacts/templates/dhf/fda-cybersecurity/vuln-assessment.md +4 -3
  189. package/src/artifacts/templates/dhf/iec-60601/hrs.md +170 -0
  190. package/src/artifacts/templates/dhf/iec-62304/detailed-design.md +1 -1
  191. package/src/artifacts/templates/dhf/iec-62304/integration-test.md +3 -3
  192. package/src/artifacts/templates/dhf/iec-62304/sad.md +6 -5
  193. package/src/artifacts/templates/dhf/iec-62304/sbom.md +3 -2
  194. package/src/artifacts/templates/dhf/iec-62304/sdp.md +5 -4
  195. package/src/artifacts/templates/dhf/iec-62304/soup.md +4 -2
  196. package/src/artifacts/templates/dhf/iec-62304/srs.md +54 -20
  197. package/src/artifacts/templates/dhf/iec-62304/sw-traceability.md +3 -3
  198. package/src/artifacts/templates/dhf/iec-62304/system-test.md +1 -1
  199. package/src/artifacts/templates/dhf/iec-62366/summative-eval.md +1 -1
  200. package/src/artifacts/templates/dhf/iec-62366/task-analysis.md +40 -4
  201. package/src/artifacts/templates/dhf/iec-62366/ue-plan.md +1 -1
  202. package/src/artifacts/templates/dhf/iec-62366/urra.md +3 -3
  203. package/src/artifacts/templates/dhf/iso-14971/fmea.md +42 -19
  204. package/src/artifacts/templates/dhf/iso-14971/har.md +3 -3
  205. package/src/artifacts/templates/dhf/iso-14971/rmp.md +2 -2
  206. package/src/artifacts/templates/dhf/system/sad.md +173 -0
  207. package/src/artifacts/templates/dhf/system/standards-checklist.md +87 -0
  208. package/src/artifacts/templates/dhf/system/standards-traceability.md +125 -0
  209. package/src/artifacts/templates/dhf/system/syrs.md +128 -0
  210. package/src/assurance/cybersecurity/memo_cybersecurity.sysml +40 -21
  211. package/src/assurance/human_factors/memo_human_factors.sysml +29 -22
  212. package/src/assurance/requirements/memo_requirements.sysml +7 -20
  213. package/src/assurance/requirements/needs/memo_needs.sysml +1 -1
  214. package/src/assurance/safety_risk/analysis/memo_fmea.sysml +118 -13
  215. package/src/assurance/safety_risk/memo_risk.sysml +90 -7
  216. package/src/assurance/safety_risk/postmarket_surveillance/memo_postmarket_surveillance.sysml +16 -0
  217. package/src/assurance/verification_validation/memo_assurance.sysml +17 -21
  218. package/src/core/annotations/memo_annotations.sysml +25 -6
  219. package/src/core/common/memo_common.sysml +130 -21
  220. package/src/core/consistency_rules/consistency_rules.sysml +1 -1
  221. package/src/core/dimensions/dimensions.sysml +12 -0
  222. package/src/core/enumerations/memo_enumerations.sysml +60 -14
  223. package/src/core/relationships/memo_relationships.sysml +199 -196
  224. package/src/memo_namespaces.sysml +30 -0
  225. package/src/methodology/core/memo_core.sysml +24 -0
  226. package/src/methodology/profiles/memo_profiles.sysml +1 -1
  227. package/src/methodology/workflow/memo_workflow.sysml +5 -5
  228. package/src/rules/closure/closure_rules.sysml +20 -20
  229. package/src/rules/crosslayer/cross_layer_rules.sysml +2 -2
  230. package/src/rules/ontology/ontology_invariants.sysml +223 -11
  231. package/src/rules/quantitative/quantitative_rules.sysml +2 -2
  232. package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +30 -30
  233. package/src/viewpoints/clinical/clinical_viewpoint.sysml +2 -3
  234. package/src/viewpoints/context/context_viewpoint.sysml +2 -3
  235. package/src/viewpoints/context/views/system_context_view/system_context_view.sysml +1 -2
  236. package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +2 -4
  237. package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +46 -3
  238. package/src/viewpoints/functional/functional_viewpoint.sysml +2 -3
  239. package/src/viewpoints/functional/views/function_allocation_view/function_allocation_view.sysml +2 -3
  240. package/src/viewpoints/functional/views/system_functional_tree_view/system_functional_tree_view.sysml +2 -3
  241. package/src/viewpoints/logical/logical_viewpoint.sysml +1 -2
  242. package/src/viewpoints/logical/views/logical_architecture_view/logical_architecture_view.sysml +1 -2
  243. package/src/viewpoints/operational/operational_viewpoint.sysml +2 -3
  244. package/src/viewpoints/operational/views/use_case_view/use_case_view.sysml +2 -3
  245. package/src/viewpoints/physical/physical_viewpoint.sysml +1 -2
  246. package/src/viewpoints/physical/views/network_topology_view/network_topology_view.sysml +1 -2
  247. package/src/viewpoints/physical/views/physical_bom_view/physical_bom_view.sysml +1 -2
  248. package/src/viewpoints/requirements/requirements_viewpoint.sysml +1 -2
  249. package/src/viewpoints/requirements/views/requirements_traceability_view/requirements_traceability_view.sysml +1 -2
  250. package/src/viewpoints/risk/risk_viewpoint.sysml +1 -2
  251. package/src/viewpoints/risk/views/risk_chain_view/risk_chain_view.sysml +1 -2
  252. package/src/viewpoints/software/software_viewpoint.sysml +1 -2
  253. package/src/viewpoints/software/views/software_architecture_view/software_architecture_view.sysml +1 -2
  254. package/src/viewpoints/ui_layout/ui_layout_viewpoint.sysml +2 -3
  255. package/src/viewpoints/usability/usability_viewpoint.sysml +1 -2
  256. package/src/viewpoints/verification/verification_viewpoint.sysml +2 -3
  257. package/src/viewpoints/verification/views/verification_coverage_view/verification_coverage_view.sysml +2 -3
  258. package/templates/connected-device/memo.package.yaml +2 -0
  259. package/templates/default/memo.package.yaml +2 -0
  260. package/templates/infusion-pump/memo.package.yaml +2 -0
  261. package/templates/monitoring-device/memo.package.yaml +2 -0
  262. package/templates/samd/memo.package.yaml +2 -0
  263. package/examples/extensions/README.md +0 -16
  264. package/examples/extensions/template/src/extension.sysml +0 -15
  265. package/examples/gpca-pump/gpca-pump.kpar +0 -0
  266. /package/{examples/extensions → extensions}/clinical/memo.package.yaml +0 -0
  267. /package/{examples/extensions → extensions}/clinical/src/clinical_extension.sysml +0 -0
  268. /package/{examples/extensions → extensions}/clinical/src/methodology/clinical_methodology.sysml +0 -0
  269. /package/{examples/extensions → extensions}/clinical/src/procedures/memo_clinical_procedures.sysml +0 -0
  270. /package/{examples/extensions → extensions}/template/memo.package.yaml +0 -0
@@ -1,10 +1,56 @@
1
- // Functional architecture (§9). A SystemFunction is a technology-independent
2
- // responsibility of the system; a SystemAction is executable behavior realizing
3
- // a function; a FunctionalExchange is a typed transfer between functions. A
4
- // function may be realized by human action, mechanical design, electrical
5
- // hardware, software, or a combination — allocation is optional and never
6
- // assumes software.
1
+ // Functional architecture (§9). A function is a responsibility: what the
2
+ // system, or one of its components, is answerable for. A FunctionalExchange is
3
+ // a typed transfer between functions. A function may be realized by human
4
+ // action, mechanical design, electrical hardware, software, or a combination —
5
+ // allocation to the system's own parts is what ComponentFunction records, and
6
+ // it never assumes software.
7
+ //
8
+ // ─── A function is a behaviour ───────────────────────────────────────────
9
+ //
10
+ // `MemoFunction` and both its specializations are `action def`s. They were
11
+ // `part def SystemFunction specializes MemoPart` until Track A0
12
+ // removed the reason: relation ends were typed on part-based types,
13
+ // KerML forbids a behaviour from specializing a part-based type, and a function
14
+ // has to be satisfiable, verifiable, and allocatable. So a function was declared
15
+ // a part, and a separate `action def OperativeAction` carried the behaviour with a
16
+ // `ref performedFunction` stapling the two back together — a reference used in
17
+ // ZERO example files. The ends are metaclass-neutral now (CR-ONT-060..073), so
18
+ // the split has no cause and is gone: OperativeAction is merged into the function
19
+ // family, and its `actionKind` moved onto MemoFunction where it was always
20
+ // describing the function anyway.
21
+ //
22
+ // `functionCategory` and `actionKind` are NOT two spellings of one axis, and
23
+ // merging them would lose information. `actionKind` is the verb — sense,
24
+ // compute, actuate, route. `functionCategory` is the domain grouping the
25
+ // project argues in — therapy, alarm, platform, protection. A function can be
26
+ // `sense` in the `protection` category, and a safety case reasons about both.
27
+ //
28
+ // ─── System function vs. component function ──────────────────────────────
29
+ //
30
+ // ARCADIA's functional chain does not stop at the system boundary: system
31
+ // functions decompose until each piece is the responsibility of exactly one
32
+ // component. MEMO names the two ends of that chain because they obey different
33
+ // rules, not because they carry different attributes:
34
+ //
35
+ // SystemFunction — a responsibility of the system as a whole.
36
+ // Technology-independent. Allocation is OPTIONAL, and a
37
+ // system function may be realized by several components,
38
+ // by a human, or by mechanism.
39
+ // ComponentFunction — a responsibility of ONE component: a flowmeter's
40
+ // "measure flow rate", a subsystem's "arbitrate alarms".
41
+ // Allocation is MANDATORY and single-valued (CR-ONT-074).
42
+ //
43
+ // That difference is structural, which is why these are two definitions rather
44
+ // than one definition carrying a `functionLevel` enum. An enum member cannot
45
+ // change a multiplicity, and "is answerable to exactly one component" is the
46
+ // whole content of the concept.
47
+ //
48
+ // Decomposition and allocation reuse the existing relations and need no new
49
+ // ones — `Composes` for the function tree, `AllocatedTo` for the component.
50
+ // Both had part-typed ends until A0; both are metaclass-neutral now, which is
51
+ // precisely what makes an action-def function usable at all.
7
52
  package memo_architecture_functional_functions {
53
+ private import Metaobjects::SemanticMetadata;
8
54
  private import ScalarValues::*;
9
55
 
10
56
  private import memo_core_common::*;
@@ -13,62 +59,73 @@ package memo_architecture_functional_functions {
13
59
  private import memo_architecture_operational_activities::*;
14
60
  private import memo_architecture_operational_scenarios::*;
15
61
 
16
- part def SystemFunction specializes ArchitectureElement {
62
+ abstract action def MemoFunction specializes MemoAction {
17
63
  attribute functionCategory : String;
64
+ attribute actionKind : ActionKind;
18
65
  attribute trigger : String;
19
66
  attribute outputSummary : String;
20
67
  attribute concernKind : ConcernKind;
21
68
  attribute criticality : CriticalityKind;
22
69
  }
23
70
 
24
- // Executable behavior realizing a system function.
25
- action def SystemAction specializes MemoAction {
26
- attribute actionKind : ActionKind;
27
- attribute executionSummary : String;
28
- ref performedFunction : SystemFunction[0..1];
29
- }
71
+ // A responsibility of the system as a whole. Allocation is optional: a
72
+ // system function that no single component owns is a normal intermediate
73
+ // state of the functional chain, not a defect.
74
+ action def SystemFunction specializes MemoFunction;
75
+
76
+ // A responsibility of exactly one component. `AllocatedTo` names that
77
+ // component; CR-ONT-074 requires it. A component function that reaches no
78
+ // component is a responsibility nobody has accepted.
79
+ action def ComponentFunction specializes MemoFunction;
30
80
 
31
81
  // Named traceable route between functions. Native `flow of` usages carry
32
- // the transported item; this element exists for budgets and assurance
33
- // attributes that a flow usage cannot own.
34
- part def FunctionalExchange specializes ArchitectureElement {
82
+ // the transported item; this element exists for the budgets and assurance
83
+ // attributes below.
84
+ //
85
+ // The reason is MEMO's grammar, NOT the language — the earlier wording here
86
+ // said "attributes that a flow usage cannot own", and that was a false
87
+ // claim about SysML v2. The standard's `FlowUsage` is
88
+ // `OccurrenceUsagePrefix 'flow' FlowDeclaration DefinitionBody`
89
+ // (SysML-textual-bnf.kebnf:829), so a conforming flow usage takes a name
90
+ // from its `UsageDeclaration` and owns attributes in its body like any
91
+ // other usage. MEMO's own production is
92
+ // `'flow' 'of' itemType 'from' … 'to' … ';'` — no name, no body — so a
93
+ // MEMO flow can carry neither an `id` nor a latency budget, and nothing
94
+ // can refer to it. Every MEMO element rests on the identification core in
95
+ // memo_core_common, and an anonymous attribute-less edge cannot join it.
96
+ //
97
+ // So this part def is a workaround for a MEMO gap, not a design MEMO is
98
+ // entitled to. Restoring the two dropped clauses is what would let it
99
+ // collapse into the flow it stands in for.
100
+ part def FunctionalExchange specializes MemoPart {
35
101
  attribute flowKind : FlowKind;
36
102
  attribute latencyBudgetMs : Real;
37
103
  attribute staleAfterMs : Real;
38
104
  attribute integrityLevel : String;
39
- ref sourceFunction : SystemFunction[0..1];
40
- ref targetFunction : SystemFunction[0..1];
105
+ // MemoFunction, not SystemFunction: an exchange between two component
106
+ // functions is the ordinary case once the chain is decomposed.
107
+ ref sourceFunction : MemoFunction[0..1];
108
+ ref targetFunction : MemoFunction[0..1];
41
109
  }
42
110
 
43
111
  // A system function enables operational work; it does not perform it.
44
112
 
45
113
  // A reusable functional route through system responsibilities. Functional
46
114
  // flows are part of functional architecture, never logical structure.
47
- part def FunctionalFlow specializes ArchitectureElement {
115
+ part def FunctionalFlow specializes MemoPart {
48
116
  attribute flowCategory : FunctionalFlowKind;
49
117
  attribute endToEndLatencyBudgetMs : String;
50
118
  attribute safetyRelevant : Boolean;
51
119
  attribute securityRelevant : Boolean;
52
120
  }
53
121
  action def FunctionalFlowStep specializes MemoAction {
54
- ref function : SystemFunction[0..1];
122
+ ref function : MemoFunction[0..1];
55
123
  ref exchange : FunctionalExchange[0..1];
56
- ref item exchangedItem : MemoExchangeItem[0..1];
124
+ ref item exchangedItem : MemoItem[0..1];
57
125
  }
58
126
 
59
- // The functional-layer scenario selects one functional route and realizes
60
- // an operative scenario. It is the "what the system does" path, not a
61
- // logical component interaction.
62
- action def FunctionalScenario specializes MemoScenario {
63
- ref selectedFlow : FunctionalFlow[0..1];
64
- }
65
- connection def IncludesStep :> MemoRelationship {
66
- end functionalFlow : FunctionalFlow;
67
- end step : FunctionalFlowStep;
68
- }
69
- connection def InvolvesFunction :> MemoRelationship {
70
- end functionalFlow : FunctionalFlow;
71
- end function : SystemFunction;
72
- }
73
- // Compatibility spelling used by existing models.
127
+ // `InvolvesFunction` is native `perform` (R10-S6): a `FunctionalFlow`
128
+ // already names its functions via its step chain
129
+ // (`perform <step>;` + the step's own `ref function`), and a flow with no
130
+ // step chain performs its functions directly.
74
131
  }
@@ -13,7 +13,7 @@ package memo_architecture_implementation_hardware_common {
13
13
  private import memo_core_enumerations::*;
14
14
  private import memo_core_relationships::*;
15
15
 
16
- part def PhysicalAssembly specializes ArchitectureElement {
16
+ part def PhysicalAssembly specializes MemoPart {
17
17
  attribute responsibility : String;
18
18
  attribute safetyRole : String;
19
19
  attribute partNumber : String;
@@ -25,7 +25,7 @@ package memo_architecture_implementation_hardware_common {
25
25
  // Retained name from 0.4; an electronics-centred assembly.
26
26
  part def HardwareAssembly specializes PhysicalAssembly;
27
27
 
28
- part def PhysicalComponent specializes ArchitectureElement {
28
+ part def PhysicalComponent specializes MemoPart {
29
29
  attribute partNumber : String;
30
30
  attribute materialSummary : String;
31
31
  // ISO 10993-1 contact characterization; required when true.
@@ -1,10 +1,17 @@
1
- // Software runtime (component-and-connector) view (§11). Runtime structure
2
- // with concurrency, scheduling, health monitoring, fault containment, and
3
- // update/rollback semantics. Module structure lives in
1
+ // Software runtime (component-and-connector) view (§11), matching the SEI
2
+ // Views and Beyond distinction between runtime components and implementation
3
+ // modules. Runtime structure carries concurrency, scheduling, health
4
+ // monitoring, fault containment, and update/rollback semantics. Module structure lives in
4
5
  // memo_architecture_implementation_software_structure; allocation in
5
- // memo_architecture_realization_deployment. Detailed AADL categories stay in the AADL
6
- // correspondence profile (examples/aadl-mapping).
6
+ // memo_architecture_realization_deployment.
7
+ //
8
+ // Detailed AADL categories live in the AADL correspondence profile, which is
9
+ // an extension package: `extensions/aadl` (plan §C5). It carries the process /
10
+ // thread / virtual-processor families and a correspondence rule per mapped
11
+ // name and property. This comment pointed at `examples/aadl-mapping` for a
12
+ // long time and that directory never existed; the pointer above resolves.
7
13
  package memo_architecture_implementation_software_runtime {
14
+ private import Metaobjects::SemanticMetadata;
8
15
  private import ScalarValues::*;
9
16
 
10
17
  private import memo_core_common::*;
@@ -25,7 +32,7 @@ package memo_architecture_implementation_software_runtime {
25
32
  enum messageBroker;
26
33
  }
27
34
 
28
- part def SoftwareComponent specializes SoftwareItem {
35
+ part def SoftwareComponent specializes SoftwareElement {
29
36
  attribute runtimeKind : RuntimeKind;
30
37
  attribute responsibility : String;
31
38
  attribute periodMs : Real;
@@ -36,7 +43,10 @@ package memo_architecture_implementation_software_runtime {
36
43
  attribute activation : String;
37
44
  attribute synchronizationMechanism : String;
38
45
  attribute sharedResources : String;
39
- attribute memoryBudget : String;
46
+ // Maximum resident memory allocation in megabytes. The public name
47
+ // predates MEMO's unit-suffixed scalar convention, so document the
48
+ // unit here rather than silently changing the published feature name.
49
+ attribute memoryBudget : Real;
40
50
  attribute healthMonitoring : String;
41
51
  attribute restartPolicy : String;
42
52
  attribute faultContainment : String;
@@ -45,24 +55,38 @@ package memo_architecture_implementation_software_runtime {
45
55
  attribute auditable : Boolean;
46
56
  attribute updatePolicy : String;
47
57
  attribute rollbackPolicy : String;
48
- // runtime-kind-specific detail (set only for the relevant runtimeKind)
49
- attribute addressSpaceIsolated : Boolean[0..1];
50
- attribute owningProcessName : String[0..1];
51
- attribute serviceContract : String[0..1];
52
- attribute discoveryMechanism : String[0..1];
53
- attribute imageReference : String[0..1];
54
- attribute orchestrationPlatform : String[0..1];
55
- attribute partitionBudget : String[0..1];
56
- attribute isolationMechanism : String[0..1];
57
- attribute storageKind : String[0..1];
58
- attribute retentionPolicy : String[0..1];
59
- attribute deliverySemantics : String[0..1];
60
- attribute topicStructure : String[0..1];
58
+ // Twelve runtime-kind-conditional attributes used to follow, each
59
+ // documented "set only for the relevant runtimeKind" — which is a
60
+ // subtype family in disguise, and a technology the base ontology had
61
+ // no business asserting. They are gone; every one of them now lives on
62
+ // a type in an extension, where it is unconditional and therefore
63
+ // checkable (plan §10.3 D3, extensions/README.md):
64
+ //
65
+ // addressSpaceIsolated, owningProcessName,
66
+ // partitionBudget, isolationMechanism -> extensions/aadl
67
+ // serviceContract, discoveryMechanism,
68
+ // storageKind, retentionPolicy -> extensions/cloud
69
+ // imageReference, orchestrationPlatform -> extensions/container
70
+ // deliverySemantics, topicStructure -> extensions/messaging
71
+ //
72
+ // The last two were also on the wrong metaclass: a component does not
73
+ // have a topic, a publication does.
74
+ //
75
+ // What stays is what is true of EVERY runtime component in every
76
+ // regulated project — the AADL thread properties above and the
77
+ // assurance ones — plus `runtimeKind` itself, which says which family
78
+ // a component belongs to without claiming to describe it.
61
79
  }
62
80
 
63
81
  connection def ComponentConnects :> MemoRelationship {
64
82
  attribute protocolSummary : String;
65
- end sourceComponent : SoftwareComponent;
66
- end targetComponent : SoftwareComponent;
83
+ end sourceComponent : SoftwareComponent :>> source;
84
+ end targetComponent : SoftwareComponent :>> target;
85
+ }
86
+ abstract connection componentConnectsLinks : ComponentConnects[*];
87
+ metadata def <componentConnects> ComponentConnectsMetadata :> SemanticMetadata {
88
+ :> annotatedElement : SysML::ConnectionDefinition;
89
+ :> annotatedElement : SysML::ConnectionUsage;
90
+ :>> baseType = componentConnectsLinks meta SysML::Usage;
67
91
  }
68
92
  }
@@ -1,7 +1,10 @@
1
- // Software module view (§11; IEC 62304 5.3-5.4). Code/module structure only:
2
- // runtime structure lives in memo_architecture_implementation_software_runtime and
3
- // allocation in memo_architecture_realization_deployment.
1
+ // Software module view (§11; IEC 62304 5.3-5.4). Following the SEI Views and
2
+ // Beyond viewtypes, modules are implementation/code units; interacting runtime
3
+ // elements are SoftwareComponents in
4
+ // memo_architecture_implementation_software_runtime, and allocation lives in
5
+ // memo_architecture_realization_deployment.
4
6
  package memo_architecture_implementation_software_structure {
7
+ private import Metaobjects::SemanticMetadata;
5
8
  private import ScalarValues::*;
6
9
 
7
10
  private import memo_core_common::*;
@@ -21,12 +24,16 @@ package memo_architecture_implementation_software_structure {
21
24
  // software view inherits it rather than re-declaring it: the code view
22
25
  // (SoftwareModule), the runtime view (SoftwareComponent), the system, and
23
26
  // the user interface (memo_architecture_implementation_ui::UIElement).
24
- abstract part def SoftwareItem specializes ArchitectureElement {
27
+ // Structural software decomposition is part-native. IEC 62304 also uses
28
+ // the term "software item" for this concept, but reserving SoftwareItem
29
+ // for the native SysML item family keeps structural parts and exchanged
30
+ // values unambiguous in the model.
31
+ abstract part def SoftwareElement specializes MemoPart {
25
32
  attribute safetyClass : SafetyClassKind;
26
33
  attribute complexity : ComplexityKind;
27
34
  }
28
35
 
29
- part def SoftwareSystem specializes SoftwareItem {
36
+ part def SoftwareSystem specializes SoftwareElement {
30
37
  attribute version : String;
31
38
  attribute operatingSystem : String;
32
39
  }
@@ -44,7 +51,7 @@ package memo_architecture_implementation_software_structure {
44
51
  enum soup;
45
52
  }
46
53
 
47
- part def SoftwareModule specializes SoftwareItem {
54
+ part def SoftwareModule specializes SoftwareElement {
48
55
  attribute moduleKind : ModuleKind;
49
56
  attribute responsibility : String;
50
57
  // module-kind-specific detail (set only for the relevant moduleKind)
@@ -63,22 +70,30 @@ package memo_architecture_implementation_software_structure {
63
70
  attribute soupClassification : SOUPClassificationKind[0..1];
64
71
  }
65
72
 
66
- part def Algorithm specializes ArchitectureElement {
73
+ part def Algorithm specializes MemoPart {
67
74
  attribute algorithmKind : String;
68
75
  attribute inputSummary : String;
69
76
  attribute outputSummary : String;
70
77
  attribute clinicalPerformanceClaim : String;
71
78
  }
72
- part def DataModel specializes ArchitectureElement {
79
+ part def DataModel specializes MemoPart {
73
80
  attribute schemaReference : String;
74
81
  attribute persistenceScope : String;
75
82
  }
76
- part def ConfigurationArtifact specializes ArchitectureElement {
83
+ part def ConfigurationArtifact specializes MemoPart {
77
84
  attribute configurationScope : String;
78
85
  attribute version : String;
79
86
  }
80
87
 
81
- item def SBOMEntry specializes MemoExchangeItem {
88
+ // Software data/content that may be stored or exchanged through ports.
89
+ abstract item def SoftwareItem specializes MemoItem {
90
+ attribute schemaIdentifier : String;
91
+ attribute schemaVersion : String;
92
+ attribute :>> encoding : String;
93
+ attribute :>> timestampRequired : Boolean;
94
+ }
95
+
96
+ item def SBOMEntry specializes SoftwareItem {
82
97
  attribute componentName : String;
83
98
  attribute version : String;
84
99
  attribute supplier : String;
@@ -86,8 +101,20 @@ package memo_architecture_implementation_software_structure {
86
101
  attribute hash : String;
87
102
  }
88
103
 
89
- connection def ModuleUses :> MemoRelationship {
90
- end usingModule : SoftwareModule;
91
- end usedModule : SoftwareModule;
104
+ // `ModuleUses` is native `dependency` (R10-S6): write
105
+ // `dependency <usingModule> to <usedModule>;` instead of a connection.
106
+
107
+ // ── Relations owned by this package ─────────────────────────────
108
+ // Moved out of memo_core_relationships: their ends are typed against
109
+ // types declared here, and core must not depend on a domain package.
110
+ connection def DependsOnSoup :> MemoRelationship {
111
+ end component : MemoPart :>> source;
112
+ end soupItem : SoftwareElement :>> target;
113
+ }
114
+ abstract connection dependsOnSoupLinks : DependsOnSoup[*];
115
+ metadata def <dependsOnSoup> DependsOnSoupMetadata :> SemanticMetadata {
116
+ :> annotatedElement : SysML::ConnectionDefinition;
117
+ :> annotatedElement : SysML::ConnectionUsage;
118
+ :>> baseType = dependsOnSoupLinks meta SysML::Usage;
92
119
  }
93
120
  }
@@ -5,10 +5,12 @@
5
5
  // UI is an implementation concern (rendered UI is software; physical controls
6
6
  // are hardware), so it lives in the implementation layer, not operational.
7
7
  package memo_architecture_implementation_ui {
8
+ private import Metaobjects::SemanticMetadata;
8
9
  private import ScalarValues::*;
9
10
 
10
11
  private import memo_core_common::*;
11
12
  private import memo_core_enumerations::*;
13
+ private import memo_assurance_safety_risk::*; // RiskControlMeasure
12
14
  private import memo_core_relationships::*;
13
15
  private import memo_architecture_operational_activities::*;
14
16
  private import memo_architecture_operational_scenarios::*;
@@ -108,7 +110,7 @@ package memo_architecture_implementation_ui {
108
110
  enum recovery;
109
111
  }
110
112
 
111
- part def UserInterface specializes ArchitectureElement {
113
+ part def UserInterface specializes MemoPart {
112
114
  attribute modality : String;
113
115
  attribute uiTechnology : String;
114
116
  }
@@ -119,7 +121,7 @@ package memo_architecture_implementation_ui {
119
121
  // "something the user interacts with" rather than against software
120
122
  // specifically. Without it a use error on a knob would be unmodellable,
121
123
  // because ErrorAtElement would only accept a UIElement.
122
- abstract part def InteractionElement specializes ArchitectureElement {
124
+ abstract part def InteractionElement specializes MemoPart {
123
125
  attribute labelText : String;
124
126
  attribute accessibilitySummary : String;
125
127
  // alarm annunciation (optional; IEC 60601-1-8)
@@ -143,15 +145,15 @@ package memo_architecture_implementation_ui {
143
145
  // errors, and risk controls already trace to it. Screen layout adds four
144
146
  // numbers to that tree — it does not add a tree.
145
147
  //
146
- // A UIElement IS a SOFTWARE ITEM (IEC 62304 §3.25) and specializes the
147
- // SoftwareItem base, inheriting safetyClass and complexity, so the
148
+ // A UIElement IS a structural SOFTWARE ITEM (IEC 62304 §3.25) and
149
+ // specializes SoftwareElement, inheriting safetyClass and complexity, so the
148
150
  // interface is classified and decomposed like the software it is.
149
151
  //
150
- // It specializes SoftwareItem and NOT SoftwareModule: the module view is
152
+ // It specializes SoftwareElement and NOT SoftwareModule: the module view is
151
153
  // CODE, and a screen is not a source module. Runtime processes are
152
154
  // SoftwareComponent, code is SoftwareModule, and the UI is a third view of
153
155
  // the same software — a sibling of those, not a kind of either.
154
- part def UIElement specializes SoftwareItem, InteractionElement {
156
+ part def UIElement specializes SoftwareElement, InteractionElement {
155
157
  attribute formKind : UIElementFormKind;
156
158
  // ── screen layout (optional; set for elements that are laid out) ──
157
159
  // Bounds are relative to the parent element in the Composes tree; a
@@ -169,6 +171,11 @@ package memo_architecture_implementation_ui {
169
171
  // Capture-relative fill transparency for region review overlays. A
170
172
  // modelled value keeps interactive review and exported figures aligned.
171
173
  attribute boundaryOpacity : Real[0..1];
174
+ // Stroke width of the same box, in pixels. Colour and opacity are
175
+ // modelled so a review print, an exported figure, and the workbench
176
+ // agree on which box is which; a width chosen per renderer breaks that
177
+ // agreement for exactly the same reason.
178
+ attribute boundaryWidth : Real[0..1];
172
179
  attribute detectionMethod : BoundsDetectionKind[0..1];
173
180
  attribute detectionConfidence : Real[0..1];
174
181
  attribute confirmedBy : String;
@@ -228,7 +235,7 @@ package memo_architecture_implementation_ui {
228
235
  }
229
236
 
230
237
  // ─── Captured evidence ───────────────────────────────────────
231
- // One image of one screen. MemoEvidence, not ArchitectureElement: it
238
+ // One image of one screen. MemoEvidence, not a design element: it
232
239
  // records what a specific build actually displayed at a specific time,
233
240
  // which is the provenance a design review or a usability engineering file
234
241
  // needs before it can rely on the picture. The screen it depicts is an
@@ -251,11 +258,11 @@ package memo_architecture_implementation_ui {
251
258
  }
252
259
 
253
260
  // UI state is presentation state — distinct from system/device state.
254
- part def UIState specializes ArchitectureElement {
261
+ part def UIState specializes MemoPart {
255
262
  attribute displayedInformation : String;
256
263
  attribute availableActions : String;
257
264
  }
258
- part def UIEvent specializes ArchitectureElement {
265
+ part def UIEvent specializes MemoPart {
259
266
  attribute eventSource : String;
260
267
  attribute intent : InteractionIntentKind;
261
268
  }
@@ -267,38 +274,44 @@ package memo_architecture_implementation_ui {
267
274
  }
268
275
 
269
276
  // A reusable dialogue structure through the UI; a selected path through
270
- // it is an UIScenario.
277
+ // it is a OperativeScenario with scenarioKind `ui`.
271
278
  action def InteractionFlow specializes MemoAction {
272
279
  attribute entryPoint : String;
273
280
  attribute exitPoint : String;
274
281
  }
275
282
 
276
- action def UIScenario specializes MemoScenario {
277
- ref parentFlow : InteractionFlow[0..1];
278
- }
279
-
280
- connection def UITransition :> MemoRelationship {
281
- attribute triggeringEvent : String;
282
- attribute guardCondition : String;
283
- end sourceState : UIState;
284
- end targetState : UIState;
285
- }
286
283
  connection def DataBinding :> MemoRelationship {
287
284
  attribute bindingExpression : String;
288
285
  attribute refreshPolicy : String;
289
- end boundElement : InteractionElement;
290
- end dataSource : MemoPart;
286
+ end boundElement : InteractionElement :>> source;
287
+ end dataSource : MemoItem :>> target;
291
288
  }
292
- connection def PresentsState :> MemoRelationship {
293
- end userInterface : UserInterface;
294
- end uiState : UIState;
289
+ abstract connection dataBindingLinks : DataBinding[*];
290
+ metadata def <dataBinding> DataBindingMetadata :> SemanticMetadata {
291
+ :> annotatedElement : SysML::ConnectionDefinition;
292
+ :> annotatedElement : SysML::ConnectionUsage;
293
+ :>> baseType = dataBindingLinks meta SysML::Usage;
295
294
  }
295
+ // `PresentsState` had zero usages anywhere in the tree (R10-S6). Its
296
+ // audited native form, `exhibit state`, does not actually fit: `UIState`
297
+ // is a `part def` with plain string attributes, not a `state def`, and
298
+ // SysIDE rejects `exhibit` referencing anything that does not conform to
299
+ // `States::StateAction` ("An exhibit state must reference another
300
+ // state"). Free deletion rather than a migration — nothing referenced
301
+ // it, so nothing to preserve. If `UIState` is ever restructured onto a
302
+ // real state machine, `exhibit state` becomes available then.
296
303
 
297
304
  // ── Screen layout relations ──────────────────────────────────
298
305
  // Which modelled screen an image is a rendering of.
299
306
  connection def CapturesScreen :> MemoRelationship {
300
- end capture : ScreenCapture;
301
- end screen : UIElement;
307
+ end capture : ScreenCapture :>> source;
308
+ end screen : UIElement :>> target;
309
+ }
310
+ abstract connection capturesScreenLinks : CapturesScreen[*];
311
+ metadata def <capturesScreen> CapturesScreenMetadata :> SemanticMetadata {
312
+ :> annotatedElement : SysML::ConnectionDefinition;
313
+ :> annotatedElement : SysML::ConnectionUsage;
314
+ :>> baseType = capturesScreenLinks meta SysML::Usage;
302
315
  }
303
316
 
304
317
  // Activating this element opens another screen. This is NAVIGATION, not
@@ -309,34 +322,61 @@ package memo_architecture_implementation_ui {
309
322
  // from here, and only this relation says so.
310
323
  connection def NavigatesTo :> MemoRelationship {
311
324
  attribute triggerGesture : String;
312
- end sourceElement : UIElement;
313
- end targetScreen : UIElement;
325
+ end sourceElement : UIElement :>> source;
326
+ end targetScreen : UIElement :>> target;
327
+ }
328
+ abstract connection navigatesToLinks : NavigatesTo[*];
329
+ metadata def <navigatesTo> NavigatesToMetadata :> SemanticMetadata {
330
+ :> annotatedElement : SysML::ConnectionDefinition;
331
+ :> annotatedElement : SysML::ConnectionUsage;
332
+ :>> baseType = navigatesToLinks meta SysML::Usage;
314
333
  }
315
334
 
316
335
  // ── §18 traceability ─────────────────────────────────────────
317
336
  connection def ElementTriggersAction :> MemoRelationship {
318
- end element : InteractionElement;
319
- end triggeredAction : UIAction;
337
+ end element : InteractionElement :>> source;
338
+ end triggeredAction : UIAction :>> target;
320
339
  }
321
- connection def ActionInvokesFunction :> MemoRelationship {
322
- end uiAction : UIAction;
323
- end systemFunction : SystemFunction;
340
+ abstract connection elementTriggersActionLinks : ElementTriggersAction[*];
341
+ metadata def <elementTriggersAction> ElementTriggersActionMetadata :> SemanticMetadata {
342
+ :> annotatedElement : SysML::ConnectionDefinition;
343
+ :> annotatedElement : SysML::ConnectionUsage;
344
+ :>> baseType = elementTriggersActionLinks meta SysML::Usage;
324
345
  }
346
+ // `ActionInvokesFunction` is native `perform` (R10-S6): write
347
+ // `perform <systemFunction>;` inside the `UIAction` usage instead.
325
348
  connection def FlowServesUseCase :> MemoRelationship {
326
- end interactionFlow : InteractionFlow;
327
- end useCase : UseCase;
349
+ end interactionFlow : InteractionFlow :>> source;
350
+ end useCase : UseCase :>> target;
351
+ }
352
+ abstract connection flowServesUseCaseLinks : FlowServesUseCase[*];
353
+ metadata def <flowServesUseCase> FlowServesUseCaseMetadata :> SemanticMetadata {
354
+ :> annotatedElement : SysML::ConnectionDefinition;
355
+ :> annotatedElement : SysML::ConnectionUsage;
356
+ :>> baseType = flowServesUseCaseLinks meta SysML::Usage;
328
357
  }
329
- // The UI-layer scenario realizes exactly one FunctionalScenario one layer
330
- // up (the interaction sequence that carries out the function sequence),
331
- // completing the OperativeScenario → FunctionalScenario → UIScenario chain.
358
+ // A UI scenario realizes a functional scenario one layer up: each is a
359
+ // OperativeScenario selected by scenarioKind rather than a separate definition.
332
360
  connection def ErrorAtElement :> MemoRelationship {
333
- end useError : UseError;
334
- end element : InteractionElement;
361
+ end useError : UseError :>> source;
362
+ end element : InteractionElement :>> target;
363
+ }
364
+ abstract connection errorAtElementLinks : ErrorAtElement[*];
365
+ metadata def <errorAtElement> ErrorAtElementMetadata :> SemanticMetadata {
366
+ :> annotatedElement : SysML::ConnectionDefinition;
367
+ :> annotatedElement : SysML::ConnectionUsage;
368
+ :>> baseType = errorAtElementLinks meta SysML::Usage;
335
369
  }
336
370
  // A risk control implemented by a UI element or by task design
337
371
  // (confirmation dialog, lockout, guarded control).
338
372
  connection def ControlImplementedBy :> MemoRelationship {
339
- end riskControl : VerifiableElement;
340
- end implementingElement : ArchitectureElement;
373
+ end riskControl : RiskControlMeasure :>> source;
374
+ end implementingElement :>> target;
375
+ }
376
+ abstract connection controlImplementedByLinks : ControlImplementedBy[*];
377
+ metadata def <controlImplementedBy> ControlImplementedByMetadata :> SemanticMetadata {
378
+ :> annotatedElement : SysML::ConnectionDefinition;
379
+ :> annotatedElement : SysML::ConnectionUsage;
380
+ :>> baseType = controlImplementedByLinks meta SysML::Usage;
341
381
  }
342
382
  }