@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,31 +1,60 @@
1
1
  package memo_architecture_operational_structure {
2
+ private import Metaobjects::SemanticMetadata;
2
3
  private import ScalarValues::*;
3
4
 
4
5
  private import memo_core_common::*;
5
6
  private import memo_core_enumerations::*;
6
7
  private import memo_core_relationships::*;
7
- private import memo_architecture_operational_activities::*;
8
- // OperationalActivity now lives in memo_architecture_operational_activities (action def) and
9
- // Operational scenarios are defined in memo_architecture_operational_scenarios.
10
- part def Mission specializes DocumentedElement {
11
- attribute missionKind : String;
12
- attribute successCriteria : String;
13
- attribute operationalContext : String;
8
+ private import memo_architecture_operational_use_cases::*;
9
+
10
+ // IEC 62366-1 / ISO 14971 intended use: the medical device's declared
11
+ // purpose and the root of the operational spine. A MemoMission, because
12
+ // "mission" has no medical-device meaning — intended use is what a device
13
+ // exists to do. Was in memo_assurance_requirements; moved here as the
14
+ // operational-world root.
15
+ part def IntendedUse specializes MemoMission {
16
+ attribute indication : String;
17
+ attribute contraindication : String;
18
+ attribute patientPopulation : String;
19
+ attribute clinicalBenefit : String;
20
+ attribute regulatoryClassification : String;
14
21
  }
15
- part def OperationalEntity specializes ArchitectureElement {
22
+ part def OperationalEntity specializes MemoPart {
16
23
  attribute entityKind : OperationalEntityKind;
17
24
  attribute operationalDomain : String;
18
25
  attribute responsibility : String;
19
26
  }
20
- part def OperationalCapability specializes ArchitectureElement {
27
+ part def OperationalCapability specializes MemoPart {
21
28
  attribute capabilityLevel : String;
22
29
  attribute preCondition : String;
23
30
  attribute postCondition : String;
24
31
  }
25
- part def OperationalInteraction specializes ArchitectureElement {
26
- attribute exchangeKind : FlowKind;
27
- attribute direction : DirectionKind;
28
- attribute latencyConstraint : String;
32
+
33
+ // The intended use requires these operational capabilities (ARCADIA:
34
+ // Mission Requires Capability).
35
+ connection def RequiresCapability :> MemoRelationship {
36
+ end requiringIntendedUse : IntendedUse :>> source;
37
+ end requiredCapability : OperationalCapability :>> target;
38
+ }
39
+ abstract connection requiresCapabilityLinks : RequiresCapability[*];
40
+ metadata def <requiresCapability> RequiresCapabilityMetadata :> SemanticMetadata {
41
+ :> annotatedElement : SysML::ConnectionDefinition;
42
+ :> annotatedElement : SysML::ConnectionUsage;
43
+ :>> baseType = requiresCapabilityLinks meta SysML::Usage;
44
+ }
45
+
46
+ // An operational capability enables a use case (the ability the actor draws
47
+ // on to accomplish the goal). Capability is tied to the use case, not to
48
+ // individual activities.
49
+ connection def EnablesUseCase :> MemoRelationship {
50
+ end enablingCapability : OperationalCapability :>> source;
51
+ end enabledUseCase : UseCase :>> target;
52
+ }
53
+ abstract connection enablesUseCaseLinks : EnablesUseCase[*];
54
+ metadata def <enablesUseCase> EnablesUseCaseMetadata :> SemanticMetadata {
55
+ :> annotatedElement : SysML::ConnectionDefinition;
56
+ :> annotatedElement : SysML::ConnectionUsage;
57
+ :>> baseType = enablesUseCaseLinks meta SysML::Usage;
29
58
  }
30
59
 
31
60
  }
@@ -2,6 +2,7 @@
2
2
  // achieve with system support — there is no separate Goal class. Clinical,
3
3
  // service, manufacturing, and development use cases specialize the same base.
4
4
  package memo_architecture_operational_use_cases {
5
+ private import Metaobjects::SemanticMetadata;
5
6
  private import ScalarValues::*;
6
7
 
7
8
  private import memo_core_common::*;
@@ -18,12 +19,7 @@ package memo_architecture_operational_use_cases {
18
19
  enum development;
19
20
  }
20
21
 
21
- use case def UseCase {
22
- attribute id : String;
23
- attribute name : String;
24
- attribute description : String;
25
- attribute rationale : String;
26
- attribute sourceReference : String;
22
+ use case def UseCase :> MemoUseCase {
27
23
  // Text of this use case's goal; this is not a separate Goal element.
28
24
  attribute goalStatement : String;
29
25
  attribute trigger : String;
@@ -34,34 +30,46 @@ package memo_architecture_operational_use_cases {
34
30
  // clinical / service / manufacturing / development
35
31
  attribute useCaseKind : UseCaseKind;
36
32
 
37
- // The device or system under consideration supports the goal.
38
- ref supportingSystem : MemoPart[0..1];
33
+ // The device or system under consideration supports the goal. Native
34
+ // `subject`, not `ref` (R10-S6): SysIDE requires an explicit subject
35
+ // before a use case can declare `actor` — `case-usage-subject-
36
+ // parameter-position` — and "the device/system under consideration"
37
+ // is exactly what a case's subject means, so this was a duplicate
38
+ // waiting to surface once `actor` needed a subject to attach to.
39
+ subject supportingSystem : MemoPart[0..1];
39
40
  ref primaryUser : User[0..1];
40
- ref supportingActors : Actor[0..*];
41
+ ref supportingActors : OperationalParticipant[0..*];
41
42
  ref useContext : UseContext[0..1];
42
- ref originatingNeeds : Need[0..*];
43
43
  }
44
44
 
45
45
  connection def Motivates :> MemoRelationship {
46
- end motivatingNeed : Need;
47
- end motivatedUseCase : UseCase;
46
+ end motivatingNeed : Need :>> source;
47
+ end motivatedUseCase : UseCase :>> target;
48
48
  }
49
- connection def Initiates :> MemoRelationship {
50
- end initiatingUser : User;
51
- end initiatedUseCase : UseCase;
52
- }
53
- connection def ParticipatesIn :> MemoRelationship {
54
- end participatingActor : Actor;
55
- end useCase : UseCase;
56
- }
57
- // UML use-case relationships. Includes establishes a decomposition level;
58
- // extends remains a cross-cutting relationship and is always presented.
59
- connection def Includes :> MemoRelationship {
60
- end includingUseCase : UseCase;
61
- end includedUseCase : UseCase;
49
+ abstract connection motivatesLinks : Motivates[*];
50
+ metadata def <motivates> MotivatesMetadata :> SemanticMetadata {
51
+ :> annotatedElement : SysML::ConnectionDefinition;
52
+ :> annotatedElement : SysML::ConnectionUsage;
53
+ :>> baseType = motivatesLinks meta SysML::Usage;
62
54
  }
55
+ // `Initiates` and `ParticipatesIn` are native `actor` (R10-S6): both were
56
+ // a bare typed edge onto UseCase with no attributes of their own, and
57
+ // native `actor` does not distinguish an initiating actor from a
58
+ // participating one — that distinction now lives in how the actor is
59
+ // named on the use case, not in a relationship type. Write
60
+ // `actor <role> = <existingElement>;` inside the use case instead.
61
+ // UML use-case decomposition (`Includes`) is native `include use case` /
62
+ // `include` (R10-S6); write that instead of a connection here. `extends`
63
+ // has 0 hits in the corpus for a use-case `extend` production, so it stays
64
+ // a MEMO construct: a cross-cutting relationship that is always presented.
63
65
  connection def Extends :> MemoRelationship {
64
- end extendingUseCase : UseCase;
65
- end extendedUseCase : UseCase;
66
+ end extendingUseCase : UseCase :>> source;
67
+ end extendedUseCase : UseCase :>> target;
68
+ }
69
+ abstract connection extendsLinks : Extends[*];
70
+ metadata def <extends> ExtendsMetadata :> SemanticMetadata {
71
+ :> annotatedElement : SysML::ConnectionDefinition;
72
+ :> annotatedElement : SysML::ConnectionUsage;
73
+ :>> baseType = extendsLinks meta SysML::Usage;
66
74
  }
67
75
  }
@@ -5,6 +5,7 @@
5
5
  // scenario. Workflows are action defs: steps, decisions, forks/joins, and
6
6
  // successions use native SysML v2 action semantics where portable.
7
7
  package memo_architecture_operational_workflows {
8
+ private import Metaobjects::SemanticMetadata;
8
9
  private import ScalarValues::*;
9
10
 
10
11
  private import memo_core_common::*;
@@ -36,20 +37,24 @@ package memo_architecture_operational_workflows {
36
37
  attribute completionCondition : String;
37
38
  attribute recoveryPathSummary : String;
38
39
  attribute timingConstraints : String;
39
- ref involvedActors : Actor[0..*];
40
40
  attribute environmentSummary : String;
41
41
  }
42
42
 
43
- // A step in a workflow wraps an operational activity or user task by
44
- // reference — the same activity may appear in several workflows.
45
- action def WorkflowStep specializes MemoAction {
46
- attribute entryCondition : String;
47
- attribute exitCondition : String;
48
- ref performedActivity : OperationalActivity[0..1];
49
- ref performedTask : UserTask[0..1];
50
- ref responsibleRole : Actor[0..1];
43
+ // The use case a workflow realizes. Many workflows may trace to one use
44
+ // case; the use case does not own its workflows (the trace points upward,
45
+ // workflow → use case).
46
+ connection def RealizesUseCase :> MemoRelationship {
47
+ end realizingWorkflow : OperationalWorkflow :>> source;
48
+ end realizedUseCase : UseCase :>> target;
49
+ }
50
+ abstract connection realizesUseCaseLinks : RealizesUseCase[*];
51
+ metadata def <realizesUseCase> RealizesUseCaseMetadata :> SemanticMetadata {
52
+ :> annotatedElement : SysML::ConnectionDefinition;
53
+ :> annotatedElement : SysML::ConnectionUsage;
54
+ :>> baseType = realizesUseCaseLinks meta SysML::Usage;
51
55
  }
52
56
 
57
+
53
58
  // decision / fork / join / handoff.
54
59
  enum def ControlNodeKind {
55
60
  enum decision;
@@ -68,8 +73,6 @@ package memo_architecture_operational_workflows {
68
73
  attribute parallelismRationale : String[0..1];
69
74
  attribute joinCondition : String[0..1];
70
75
  attribute informationTransferred : String[0..1];
71
- ref fromRole : Actor[0..1];
72
- ref toRole : Actor[0..1];
73
76
  }
74
77
 
75
78
  // Resources a workflow requires: information, materials, or equipment by
@@ -81,24 +84,32 @@ package memo_architecture_operational_workflows {
81
84
  }
82
85
 
83
86
  // ── Workflow-level relationships ─────────────────────────────
84
- // Supports unifies SupportsUseCase / SupportsTask / ContributesToCapability
85
- // (an element supports a goal/task/capability), keyed by supportKind.
86
- enum def SupportKind {
87
- enum useCase;
88
- enum task;
89
- enum capability;
90
- }
87
+ // An element supports (affords, enables) an action — e.g. a UI element
88
+ // that affords a user task. Use-case and capability tracing are direct
89
+ // refs now (OperationalWorkflow.useCase,
90
+ // OperativeAction.contributesToCapabilities), so the former
91
+ // SupportKind discriminator is gone: what used to be three enum values
92
+ // that each implied a different target type are now two typed refs plus
93
+ // this one plain relation.
91
94
  connection def Supports :> MemoRelationship {
92
- attribute supportKind : SupportKind;
93
- // The accepted endpoints span SysML metaclasses: an operational
94
- // workflow or other action may support a use case, task, or
95
- // capability. They therefore have no single MEMO base type.
96
- end supporter;
97
- end supported;
95
+ end supporter :>> source;
96
+ end supported : MemoAction :>> target;
97
+ }
98
+ abstract connection supportsLinks : Supports[*];
99
+ metadata def <supports> SupportsMetadata :> SemanticMetadata {
100
+ :> annotatedElement : SysML::ConnectionDefinition;
101
+ :> annotatedElement : SysML::ConnectionUsage;
102
+ :>> baseType = supportsLinks meta SysML::Usage;
98
103
  }
99
104
  connection def RequiresResource :> MemoRelationship {
100
- end workflow : OperationalWorkflow;
101
- end resource : WorkflowResource;
105
+ end workflow : OperationalWorkflow :>> source;
106
+ end resource : WorkflowResource :>> target;
107
+ }
108
+ abstract connection requiresResourceLinks : RequiresResource[*];
109
+ metadata def <requiresResource> RequiresResourceMetadata :> SemanticMetadata {
110
+ :> annotatedElement : SysML::ConnectionDefinition;
111
+ :> annotatedElement : SysML::ConnectionUsage;
112
+ :>> baseType = requiresResourceLinks meta SysML::Usage;
102
113
  }
103
114
 
104
115
  // ── Workflow transformation (as-is → to-be) ──────────────────
@@ -113,8 +124,14 @@ package memo_architecture_operational_workflows {
113
124
  attribute transformKind : TransformKind;
114
125
  attribute transformation : StepTransformationKind[0..1];
115
126
  attribute transformationRationale : String[0..1];
116
- end source : MemoPart;
117
- end target : MemoPart;
127
+ end source : MemoAction;
128
+ end target : MemoAction;
129
+ }
130
+ abstract connection transformsLinks : Transforms[*];
131
+ metadata def <transforms> TransformsMetadata :> SemanticMetadata {
132
+ :> annotatedElement : SysML::ConnectionDefinition;
133
+ :> annotatedElement : SysML::ConnectionUsage;
134
+ :>> baseType = transformsLinks meta SysML::Usage;
118
135
  }
119
136
  // The device or system whose introduction enables a workflow.
120
137
  }
@@ -1,27 +1,39 @@
1
- // Deployment (allocation) view: SoftwareModule buildsInto
2
- // DeploymentUnit; DeploymentUnit deploysTo ProcessingNode; SoftwareComponent
3
- // hostedBy ProcessingNode. Software deploys only to capable execution nodes
4
- // (rules/crosslayer).
1
+ // Deployment (allocation) view: SoftwareModule buildsInto SoftwareDeploymentUnit;
2
+ // SoftwareDeploymentUnit deploysTo ProcessingNode. Software deploys only to capable
3
+ // execution nodes (rules/crosslayer).
4
+ //
5
+ // `HostedBy` is NOT part of that chain, and this comment used to claim it was
6
+ // ("SoftwareComponent hostedBy ProcessingNode"). It is
7
+ // `processingNode : ProcessingNode -> hostAssembly : PhysicalAssembly`:
8
+ // physical hosting of a node by the assembly it is mounted in, running the
9
+ // other way and between different things. Software reaches a node through
10
+ // DeploysTo.
5
11
  package memo_architecture_realization_deployment {
12
+ private import Metaobjects::SemanticMetadata;
6
13
  private import ScalarValues::*;
14
+ // The standard's allocation base, which the two AADL bindings below root
15
+ // on alongside MemoRelationship.
16
+ private import Allocations::Allocation;
7
17
 
8
18
  private import memo_core_common::*;
9
19
  private import memo_core_enumerations::*;
10
20
  private import memo_core_relationships::*;
11
21
  private import memo_architecture_implementation_software_structure::*;
12
22
  private import memo_architecture_implementation_software_runtime::*;
23
+ private import memo_architecture_implementation_hardware_electrical::*; // NetworkMedium
13
24
  private import memo_architecture_realization_physical::*;
14
25
  private import memo_architecture_functional_functions::*;
15
26
  private import memo_architecture_logical_structure::*;
27
+ private import memo_architecture_logical_interfaces::*; // ComponentExchange
16
28
 
17
- part def DeploymentUnit specializes ArchitectureElement {
29
+ part def SoftwareDeploymentUnit specializes MemoPart {
18
30
  attribute unitKind : String;
19
31
  attribute version : String;
20
32
  attribute integrityProtection : String;
21
33
  attribute installationMechanism : String;
22
34
  }
23
35
 
24
- part def RuntimeEnvironment specializes ArchitectureElement {
36
+ part def RuntimeEnvironment specializes MemoPart {
25
37
  attribute environmentKind : String;
26
38
  attribute osOrRtos : String;
27
39
  attribute providedServices : String;
@@ -29,17 +41,88 @@ package memo_architecture_realization_deployment {
29
41
  }
30
42
 
31
43
  connection def BuildsInto :> MemoRelationship {
32
- end module : SoftwareModule;
33
- end deploymentUnit : DeploymentUnit;
44
+ end module : SoftwareModule :>> source;
45
+ end deploymentUnit : SoftwareDeploymentUnit :>> target;
46
+ }
47
+ abstract connection buildsIntoLinks : BuildsInto[*];
48
+ metadata def <buildsInto> BuildsIntoMetadata :> SemanticMetadata {
49
+ :> annotatedElement : SysML::ConnectionDefinition;
50
+ :> annotatedElement : SysML::ConnectionUsage;
51
+ :>> baseType = buildsIntoLinks meta SysML::Usage;
34
52
  }
35
53
  connection def DeploysTo :> MemoRelationship {
36
54
  attribute deploymentKind : DeploymentKind;
37
- end deploymentUnit : DeploymentUnit;
38
- end node : ProcessingNode;
55
+ end deploymentUnit : SoftwareDeploymentUnit :>> source;
56
+ end node : ProcessingNode :>> target;
57
+ }
58
+ abstract connection deploysToLinks : DeploysTo[*];
59
+ metadata def <deploysTo> DeploysToMetadata :> SemanticMetadata {
60
+ :> annotatedElement : SysML::ConnectionDefinition;
61
+ :> annotatedElement : SysML::ConnectionUsage;
62
+ :>> baseType = deploysToLinks meta SysML::Usage;
39
63
  }
40
64
  connection def ProvidesEnvironment :> MemoRelationship {
41
- end node : ProcessingNode;
42
- end environment : RuntimeEnvironment;
65
+ end node : ProcessingNode :>> source;
66
+ end environment : RuntimeEnvironment :>> target;
67
+ }
68
+ abstract connection providesEnvironmentLinks : ProvidesEnvironment[*];
69
+ metadata def <providesEnvironment> ProvidesEnvironmentMetadata :> SemanticMetadata {
70
+ :> annotatedElement : SysML::ConnectionDefinition;
71
+ :> annotatedElement : SysML::ConnectionUsage;
72
+ :>> baseType = providesEnvironmentLinks meta SysML::Usage;
73
+ }
74
+
75
+ // ─── AADL bindings (SAE AS5506) — plan C1 ────────────────────────────
76
+ //
77
+ // AADL's analytic power is that EVERYTHING is bound to something, and the
78
+ // binding is where latency, bandwidth and fault propagation accrue. MEMO
79
+ // had one binding of three: `DeploysTo` is `actual_processor_binding`.
80
+ // Without the other two, `SoftwareComponent.memoryBudget` is unanalysable
81
+ // and `EndToEndFlow.latencyBudgetMs` cannot be checked against the media
82
+ // the flow traverses — the analysis the flow comment below describes and
83
+ // the model could not perform.
84
+ //
85
+ // Both are `allocation def`s rooted on the standard's
86
+ // `Allocations::Allocation`, because a binding IS an allocation and the
87
+ // language says so. The double specialization keeps MEMO's identification
88
+ // core from `MemoRelationship` while adding the standard's allocation
89
+ // semantics; both root on `Connections::BinaryConnection`, so this is a
90
+ // diamond and not a conflict. Verified under `syside check` against a
91
+ // negative control (a non-existent supertype is reported), so the clean
92
+ // result is the checker agreeing rather than the checker skipping.
93
+
94
+ // AADL `actual_memory_binding`. Which memory a software component's code
95
+ // and data occupy — what makes a memory budget a claim about a device
96
+ // rather than a string.
97
+ allocation def MemoryBinding :> MemoRelationship, Allocations::Allocation {
98
+ attribute bindingKind : String;
99
+ end boundComponent : SoftwareComponent :>> source;
100
+ end memory : MemoryDevice :>> target;
101
+ }
102
+ abstract connection memoryBindingLinks : MemoryBinding[*];
103
+ metadata def <memoryBinding> MemoryBindingMetadata :> SemanticMetadata {
104
+ :> annotatedElement : SysML::AllocationDefinition;
105
+ :> annotatedElement : SysML::AllocationUsage;
106
+ :>> baseType = memoryBindingLinks meta SysML::Usage;
107
+ }
108
+
109
+ // AADL `actual_connection_binding`. Which physical medium carries a
110
+ // component exchange. The source is the ComponentExchange rather than the
111
+ // `ComponentConnects` link, because the exchange is the ELEMENT that owns
112
+ // the budget (§19.3) and a link instance is not something the graph can
113
+ // bind to; it is also exactly where the latency the medium contributes has
114
+ // to be accounted.
115
+ allocation def ConnectionBinding :> MemoRelationship, Allocations::Allocation {
116
+ attribute allocatedBandwidth : String;
117
+ attribute mediumLatencyMs : Real;
118
+ end boundExchange : ComponentExchange :>> source;
119
+ end medium : NetworkMedium :>> target;
120
+ }
121
+ abstract connection connectionBindingLinks : ConnectionBinding[*];
122
+ metadata def <connectionBinding> ConnectionBindingMetadata :> SemanticMetadata {
123
+ :> annotatedElement : SysML::AllocationDefinition;
124
+ :> annotatedElement : SysML::AllocationUsage;
125
+ :>> baseType = connectionBindingLinks meta SysML::Usage;
43
126
  }
44
127
 
45
128
  // ─── AADL-style flow modeling (SAE AS5506) ───────────────────────────
@@ -57,7 +140,7 @@ package memo_architecture_realization_deployment {
57
140
  enum path;
58
141
  }
59
142
  // A flow declared at a logical component boundary (in-port → out-port).
60
- part def FlowSpecification specializes ArchitectureElement {
143
+ part def FlowSpecification specializes MemoPart {
61
144
  attribute flowKind : FlowSpecKind;
62
145
  ref inPort : LogicalPort[0..1];
63
146
  ref outPort : LogicalPort[0..1];
@@ -65,11 +148,11 @@ package memo_architecture_realization_deployment {
65
148
  // A complete source→sink flow traced across the layers and the software→
66
149
  // hardware binding it traverses. `latencyBudgetMs` and `analysisPurpose`
67
150
  // (latency | fault-propagation | security) drive the AADL-style analysis.
68
- part def EndToEndFlow specializes ArchitectureElement {
151
+ part def EndToEndFlow specializes MemoPart {
69
152
  attribute latencyBudgetMs : Real;
70
153
  attribute analysisPurpose : String;
71
- ref sourceFunction : SystemFunction[0..1];
72
- ref sinkFunction : SystemFunction[0..1];
154
+ ref sourceFunction : MemoFunction[0..1];
155
+ ref sinkFunction : MemoFunction[0..1];
73
156
  ref logicalSegments : LogicalComponent[0..*];
74
157
  // Runtime C&C components (SEI) — the elements actually bound to hardware.
75
158
  ref softwareSegments : SoftwareComponent[0..*];
@@ -79,12 +162,24 @@ package memo_architecture_realization_deployment {
79
162
  // segment per traversed component boundary (AADL flow-spec → end-to-end).
80
163
  connection def FlowComprisesSpec :> MemoRelationship {
81
164
  attribute segmentOrder : Integer;
82
- end endToEndFlow : EndToEndFlow;
83
- end spec : FlowSpecification;
165
+ end endToEndFlow : EndToEndFlow :>> source;
166
+ end spec : FlowSpecification :>> target;
167
+ }
168
+ abstract connection flowComprisesSpecLinks : FlowComprisesSpec[*];
169
+ metadata def <flowComprisesSpec> FlowComprisesSpecMetadata :> SemanticMetadata {
170
+ :> annotatedElement : SysML::ConnectionDefinition;
171
+ :> annotatedElement : SysML::ConnectionUsage;
172
+ :>> baseType = flowComprisesSpecLinks meta SysML::Usage;
84
173
  }
85
174
  // The flow traverses a software→hardware binding; latency accrues here.
86
175
  connection def FlowTraversesBinding :> MemoRelationship {
87
- end endToEndFlow : EndToEndFlow;
88
- end deploymentUnit : DeploymentUnit;
176
+ end endToEndFlow : EndToEndFlow :>> source;
177
+ end deploymentUnit : SoftwareDeploymentUnit :>> target;
178
+ }
179
+ abstract connection flowTraversesBindingLinks : FlowTraversesBinding[*];
180
+ metadata def <flowTraversesBinding> FlowTraversesBindingMetadata :> SemanticMetadata {
181
+ :> annotatedElement : SysML::ConnectionDefinition;
182
+ :> annotatedElement : SysML::ConnectionUsage;
183
+ :>> baseType = flowTraversesBindingLinks meta SysML::Usage;
89
184
  }
90
185
  }
@@ -6,7 +6,7 @@ package memo_architecture_realization_physical {
6
6
 
7
7
  private import memo_core_common::*;
8
8
  private import memo_core_enumerations::*;
9
- part def ProcessingNode specializes ArchitectureElement {
9
+ part def ProcessingNode specializes MemoPart {
10
10
  attribute nodeKind : ProcessingNodeKind;
11
11
  attribute processorArchitecture : String;
12
12
  attribute memoryMB : String;
@@ -17,14 +17,39 @@ package memo_architecture_realization_physical {
17
17
  attribute supportsContainerization : Boolean;
18
18
  attribute realTimeCapable : Boolean;
19
19
  }
20
- part def MemoryDevice specializes ArchitectureElement {
20
+ part def MemoryDevice specializes MemoPart {
21
21
  attribute memoryKind : String;
22
22
  attribute capacityMB : String;
23
23
  attribute nonVolatile : Boolean;
24
24
  }
25
- part def PhysicalPort specializes InterfaceElement {
25
+ // A physical boundary feature: the connector the outside world plugs into.
26
+ //
27
+ // A `port def` (Track A1), not a part. It was `part def PhysicalPort
28
+ // specializes InterfaceElement` for one reason — the exchange endpoints
29
+ // were `MemoPart`-typed, so anything that terminated an exchange had to be
30
+ // a part (CR-ONT-002, since rewritten). Track A0 made those ends
31
+ // metaclass-neutral, and KerML forbids a port from specializing a
32
+ // part-based type, so the specialization moves to `MemoPort`.
33
+ //
34
+ // `direction` is gone: the port usage carries `in` / `out` / `inout`
35
+ // natively (Track A2). `DirectionKind` survives for the non-port
36
+ // constructs that still need it — see memo_core_enumerations.
37
+ //
38
+ // `portKind` is declared here AND on SoftwarePort rather than on a shared
39
+ // base. `MemoPort` is the identification core and nothing else — the block
40
+ // comment in memo_core_common makes that a stated invariant across all
41
+ // five bases — and pushing `portKind` down onto DataPort, SensorPort,
42
+ // CommandPort, and LogicalPort would give them a second classifier beside
43
+ // the ones they already carry (`interfaceType`, `sensorDomain`,
44
+ // `commandDomain`, `contentKind`). An intermediate `abstract port def`
45
+ // holding one attribute is a class standing in for an attribute, which is
46
+ // what the lean direction removes. One attribute, two sites, no new type.
47
+ port def PhysicalPort specializes MemoPort {
26
48
  attribute portKind : InterfaceKind;
49
+ // AADL port category (plan C2) — see SoftwarePort. A physical port
50
+ // carries it for the same reason: a sampled sensor line and a queued
51
+ // interrupt line fail differently under overload.
52
+ attribute portCategory : PortCategoryKind;
27
53
  attribute connectorType : String;
28
- attribute direction : DirectionKind;
29
54
  }
30
55
  }
@@ -1,5 +1,7 @@
1
1
  package memo_artifacts_configuration_management {
2
+ private import Metaobjects::SemanticMetadata;
2
3
  private import ScalarValues::*;
4
+ private import memo_core_relationships::*; // MemoRelationship
3
5
 
4
6
  private import memo_core_common::*;
5
7
  private import memo_core_enumerations::*;
@@ -16,4 +18,18 @@ package memo_artifacts_configuration_management {
16
18
  attribute baseline : String;
17
19
  attribute controlLevel : String;
18
20
  }
21
+
22
+ // ── Relations owned by this package ─────────────────────────────
23
+ // Moved out of memo_core_relationships: their ends are typed against
24
+ // types declared here, and core must not depend on a domain package.
25
+ connection def Changes :> MemoRelationship {
26
+ end changeRequest : ChangeRequest :>> source;
27
+ end changedElement : MemoPart :>> target;
28
+ }
29
+ abstract connection changesLinks : Changes[*];
30
+ metadata def <changes> ChangesMetadata :> SemanticMetadata {
31
+ :> annotatedElement : SysML::ConnectionDefinition;
32
+ :> annotatedElement : SysML::ConnectionUsage;
33
+ :>> baseType = changesLinks meta SysML::Usage;
34
+ }
19
35
  }
@@ -4,7 +4,9 @@ package memo_artifacts_core {
4
4
  private import memo_core_common::*;
5
5
  private import memo_core_enumerations::*;
6
6
 
7
- item def ControlledArtifact :> MemoPart {
7
+ abstract item def MemoArtifactItem :> MemoItem;
8
+
9
+ item def ControlledArtifact :> MemoArtifactItem {
8
10
  attribute version : String;
9
11
  attribute artifactKind : ArtifactKind;
10
12
  attribute owner : String;