@memoarchitect/ontology 0.13.2 → 0.15.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (315) hide show
  1. package/README.md +5 -3
  2. package/examples/connected-patient-monitor/memo.identity.yaml +34 -0
  3. package/examples/connected-patient-monitor/memo.package.yaml +3 -1
  4. package/examples/connected-patient-monitor/model/catalog/connected_patient_monitor.sysml +17 -12
  5. package/examples/connected-patient-monitor/model/{catalog → methodology}/project.sysml +4 -5
  6. package/examples/embedded-infusion-pump/memo.package.yaml +3 -1
  7. package/examples/embedded-infusion-pump/model/catalog/embedded_infusion_pump.sysml +6 -6
  8. package/examples/embedded-infusion-pump/model/{catalog → methodology}/project.sysml +4 -5
  9. package/examples/functional-logical-physical/memo.identity.yaml +28 -0
  10. package/examples/functional-logical-physical/memo.package.yaml +3 -1
  11. package/examples/functional-logical-physical/model/catalog/functional_logical_physical.sysml +5 -5
  12. package/examples/functional-logical-physical/model/{catalog → methodology}/project.sysml +4 -5
  13. package/examples/gpca-pump/analysis/Samples/01-model-overview.ipynb +40 -139
  14. package/examples/gpca-pump/analysis/Samples/02-architecture-hotspots.ipynb +38 -290
  15. package/examples/gpca-pump/analysis/Samples/03-model-quality.ipynb +47 -217
  16. package/examples/gpca-pump/analysis/Samples/04-change-impact-explorer.ipynb +50 -191
  17. package/examples/gpca-pump/analysis/Samples/05-model-charts.ipynb +42 -181
  18. package/examples/gpca-pump/analysis/Samples/06-ownership-graph.ipynb +40 -164
  19. package/examples/gpca-pump/analysis/Samples/07-model-inventory-table.ipynb +51 -172
  20. package/examples/gpca-pump/analysis/Samples/README.md +15 -9
  21. package/examples/gpca-pump/analysis/memo_model.py +243 -0
  22. package/examples/gpca-pump/memo.identity.yaml +521 -26
  23. package/examples/gpca-pump/memo.package.yaml +3 -1
  24. package/examples/gpca-pump/methodology/gpca_profiles.sysml +56 -47
  25. package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +51 -78
  26. package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +359 -357
  27. package/examples/gpca-pump/model/catalog/gpca_behavior_actions.sysml +9 -9
  28. package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +56 -69
  29. package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +44 -59
  30. package/examples/gpca-pump/model/catalog/gpca_context.sysml +23 -35
  31. package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +33 -40
  32. package/examples/gpca-pump/model/catalog/gpca_formal_behavior.sysml +62 -63
  33. package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +362 -483
  34. package/examples/gpca-pump/model/catalog/gpca_operational.sysml +45 -70
  35. package/examples/gpca-pump/model/catalog/gpca_physical.sysml +6 -12
  36. package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +173 -169
  37. package/examples/gpca-pump/model/catalog/gpca_risk.sysml +139 -225
  38. package/examples/gpca-pump/model/catalog/gpca_standards.sysml +43 -47
  39. package/examples/gpca-pump/model/catalog/gpca_system.sysml +68 -65
  40. package/examples/gpca-pump/model/catalog/gpca_trace.sysml +147 -116
  41. package/examples/gpca-pump/model/catalog/gpca_verification.sysml +65 -90
  42. package/examples/gpca-pump/model/catalog/viewpoints/context/views/context_system_context_view.sysml +4 -6
  43. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/cybersecurity_cybersecurity_view.sysml +4 -6
  44. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_cyber_assessment_view.sysml +4 -6
  45. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_threat_model_view.sysml +4 -6
  46. package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_allocation_view.sysml +2 -4
  47. package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_browser_view.sysml +7 -6
  48. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/behavior_action_flow_view.sysml +4 -6
  49. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/document_architecture_description_view.sysml +4 -6
  50. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_device_interconnect_view.sysml +3 -5
  51. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_logical_architecture_view.sysml +4 -6
  52. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_mode_state_view.sysml +4 -6
  53. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_system_decomposition_view.sysml +3 -5
  54. package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_scenario_sequence_view.sysml +3 -5
  55. package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_use_case_view.sysml +4 -6
  56. package/examples/gpca-pump/model/catalog/viewpoints/physical/views/physical_physical_bom_view.sysml +2 -4
  57. package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/document_dhf_index_view.sysml +3 -5
  58. package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/requirements_requirements_trace_view.sysml +2 -4
  59. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_hazard_analysis_view.sysml +4 -6
  60. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_rmf_view.sysml +4 -6
  61. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_fmea_view.sysml +2 -4
  62. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_risk_chain_view.sysml +4 -6
  63. package/examples/gpca-pump/model/catalog/viewpoints/software/views/document_sdd_view.sysml +4 -6
  64. package/examples/gpca-pump/model/catalog/viewpoints/software/views/software_software_architecture_view.sysml +3 -5
  65. package/examples/gpca-pump/model/catalog/viewpoints/usability/views/document_usability_view.sysml +4 -6
  66. package/examples/gpca-pump/model/catalog/viewpoints/verification/views/document_vv_view.sysml +3 -5
  67. package/examples/gpca-pump/model/catalog/viewpoints/verification/views/verification_verification_coverage_view.sysml +2 -4
  68. package/examples/gpca-pump/model/{catalog → methodology}/project.sysml +8 -6
  69. package/examples/ivd-laboratory-system/memo.package.yaml +3 -1
  70. package/examples/ivd-laboratory-system/model/catalog/ivd_laboratory_system.sysml +12 -9
  71. package/examples/ivd-laboratory-system/model/{catalog → methodology}/project.sysml +4 -5
  72. package/examples/manual-surgical-instrument/memo.package.yaml +3 -1
  73. package/examples/manual-surgical-instrument/model/catalog/manual_surgical_instrument.sysml +2 -6
  74. package/examples/manual-surgical-instrument/model/{catalog → methodology}/project.sysml +4 -5
  75. package/examples/multidimensional-layers/memo.package.yaml +3 -1
  76. package/examples/multidimensional-layers/model/catalog/multidimensional_layers.sysml +2 -4
  77. package/examples/multidimensional-layers/model/{catalog → methodology}/project.sysml +4 -5
  78. package/examples/nested-architecture-dsm/memo.identity.yaml +93 -0
  79. package/examples/nested-architecture-dsm/memo.package.yaml +3 -1
  80. package/examples/nested-architecture-dsm/model/catalog/architecture/functional/functions.sysml +30 -30
  81. package/examples/nested-architecture-dsm/model/catalog/architecture/logical/structure.sysml +28 -28
  82. package/examples/nested-architecture-dsm/model/catalog/architecture/operational/context.sysml +2 -4
  83. package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/needs.sysml +4 -4
  84. package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/requirements.sysml +7 -7
  85. package/examples/nested-architecture-dsm/model/catalog/assurance/verification_validation/verification_validation.sysml +8 -8
  86. package/examples/nested-architecture-dsm/model/{catalog → methodology}/project.sysml +4 -5
  87. package/examples/reusable-instrument/memo.package.yaml +3 -1
  88. package/examples/reusable-instrument/model/catalog/reusable_instrument.sysml +7 -7
  89. package/examples/reusable-instrument/model/{catalog → methodology}/project.sysml +4 -5
  90. package/examples/robot-cell-family/README.md +34 -0
  91. package/examples/robot-cell-family/memo.identity.yaml +142 -0
  92. package/examples/robot-cell-family/memo.package.yaml +7 -0
  93. package/examples/robot-cell-family/model/methodology/project.sysml +30 -0
  94. package/examples/robot-cell-family/model/shared/shared.sysml +53 -0
  95. package/examples/robot-cell-family/model/sos/chains.sysml +36 -0
  96. package/examples/robot-cell-family/model/sos/icds.sysml +29 -0
  97. package/examples/robot-cell-family/model/sos/sos.sysml +31 -0
  98. package/examples/robot-cell-family/model/sos/use_cases.sysml +25 -0
  99. package/examples/robot-cell-family/model/systems/manipulation/manipulation_system.sysml +35 -0
  100. package/examples/robot-cell-family/model/systems/navigation/navigation_system.sysml +46 -0
  101. package/examples/robot-cell-family/model/systems/perception/perception_system.sysml +37 -0
  102. package/examples/robot-platform/memo.package.yaml +3 -0
  103. package/examples/robot-platform/model/platform.sysml +15 -0
  104. package/examples/ros-mobile-robot/README.md +5 -4
  105. package/examples/ros-mobile-robot/memo.identity.yaml +94 -0
  106. package/examples/ros-mobile-robot/memo.package.yaml +3 -1
  107. package/examples/ros-mobile-robot/model/catalog/ros_mobile_robot.sysml +26 -29
  108. package/examples/ros-mobile-robot/model/{catalog → methodology}/project.sysml +8 -14
  109. package/examples/software-only-medical-device/memo.package.yaml +3 -1
  110. package/examples/software-only-medical-device/model/catalog/software_only_medical_device.sysml +9 -10
  111. package/examples/software-only-medical-device/model/{catalog → methodology}/project.sysml +8 -9
  112. package/examples/surgical-closure-workflow/memo.package.yaml +3 -1
  113. package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +23 -26
  114. package/examples/surgical-closure-workflow/model/{catalog → methodology}/project.sysml +7 -5
  115. package/examples/surgical-robot/memo.package.yaml +3 -1
  116. package/examples/surgical-robot/model/catalog/surgical_robot.sysml +14 -12
  117. package/examples/surgical-robot/model/{catalog → methodology}/project.sysml +4 -5
  118. package/examples/sysml-diagram-samples/README.md +1 -0
  119. package/examples/sysml-diagram-samples/memo.identity.yaml +459 -0
  120. package/examples/sysml-diagram-samples/memo.package.yaml +3 -1
  121. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/viewpoint.sysml +10 -20
  122. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/action_flow_view.sysml +5 -5
  123. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/browser_view.sysml +10 -13
  124. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.sysml +11 -7
  125. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/diagram_samples.sysml +63 -8
  126. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/drill_down_view.sysml +88 -0
  127. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/functional_flow_view.sysml +25 -25
  128. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/grid_view.sysml +6 -6
  129. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.sysml +15 -17
  130. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.sysml +21 -21
  131. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/package_view.sysml +7 -7
  132. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/requirements_view.sysml +5 -5
  133. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/sequence_view.sysml +14 -14
  134. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/state_transition_view.sysml +16 -17
  135. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/tree_view.sysml +9 -9
  136. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/use_case_view.sysml +7 -14
  137. package/examples/sysml-diagram-samples/model/{catalog → methodology}/project.sysml +5 -5
  138. package/examples/sysml-diagram-samples/model/sysml_v2_activity_example.sysml +1 -1
  139. package/examples/temperature-alarm/memo.identity.yaml +6 -0
  140. package/examples/temperature-alarm/memo.package.yaml +3 -1
  141. package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +43 -21
  142. package/examples/temperature-alarm/model/{catalog → methodology}/project.sysml +4 -5
  143. package/examples/ui-screen-regions/memo.identity.yaml +33 -0
  144. package/examples/ui-screen-regions/memo.package.yaml +3 -1
  145. package/examples/ui-screen-regions/model/catalog/architecture/functional/functions.sysml +12 -12
  146. package/examples/ui-screen-regions/model/catalog/architecture/implementation/ui.sysml +18 -18
  147. package/examples/ui-screen-regions/model/catalog/artifacts/assets/catalog.sysml +6 -6
  148. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/comments.sysml +3 -3
  149. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/notes.sysml +1 -1
  150. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/rationales.sysml +1 -1
  151. package/examples/ui-screen-regions/model/catalog/assurance/human_factors/human_factors.sysml +10 -10
  152. package/examples/ui-screen-regions/model/catalog/assurance/requirements/needs.sysml +1 -1
  153. package/examples/ui-screen-regions/model/catalog/assurance/requirements/requirements.sysml +12 -12
  154. package/examples/ui-screen-regions/model/catalog/assurance/safety_risk/risk.sysml +15 -15
  155. package/examples/ui-screen-regions/model/catalog/assurance/verification_validation/verification_validation.sysml +6 -6
  156. package/examples/ui-screen-regions/model/catalog/viewpoints/functional/views/ui_functional_tree.sysml +1 -2
  157. package/examples/ui-screen-regions/model/catalog/viewpoints/requirements/views/ui_requirements_trace.sysml +1 -2
  158. package/examples/ui-screen-regions/model/catalog/viewpoints/risk/views/ui_risk_chain.sysml +1 -2
  159. package/examples/ui-screen-regions/model/{catalog → methodology}/project.sysml +4 -5
  160. package/extensions/README.md +65 -16
  161. package/extensions/aadl/memo.package.yaml +1 -1
  162. package/extensions/aadl/src/aadl_extension.sysml +5 -2
  163. package/extensions/aadl/src/correspondence/memo_aadl_correspondence.sysml +29 -50
  164. package/extensions/clinical/memo.package.yaml +1 -1
  165. package/extensions/clinical/src/clinical_extension.sysml +2 -0
  166. package/extensions/cloud/memo.package.yaml +1 -1
  167. package/extensions/container/memo.package.yaml +1 -1
  168. package/extensions/messaging/memo.package.yaml +1 -1
  169. package/extensions/messaging/src/messaging_extension.sysml +2 -2
  170. package/extensions/ros/memo.package.yaml +1 -1
  171. package/extensions/ros/src/ros_extension.sysml +25 -24
  172. package/extensions/template/memo.package.yaml +1 -1
  173. package/extensions/template/model/extension.sysml +25 -0
  174. package/memo.manifest.yaml +1 -7
  175. package/methodologies/default/memo.package.yaml +1 -1
  176. package/methodologies/gpca/memo.package.yaml +1 -1
  177. package/ontology/memo.package.yaml +1 -1
  178. package/package.json +6 -4
  179. package/profile/memo.package.yaml +1 -1
  180. package/src/architecture/decisions/memo_decisions.sysml +9 -2
  181. package/src/architecture/functional/behavior/memo_behavior.sysml +27 -7
  182. package/src/architecture/functional/functions/memo_functions.sysml +45 -31
  183. package/src/architecture/functional/memo_architecture_functional.sysml +14 -0
  184. package/src/architecture/implementation/memo_architecture_implementation.sysml +21 -0
  185. package/src/architecture/implementation/software/runtime/memo_software_runtime.sysml +7 -0
  186. package/src/architecture/implementation/software/structure/memo_software_structure.sysml +58 -17
  187. package/src/architecture/implementation/ui/memo_ui.sysml +1 -1
  188. package/src/architecture/logical/interfaces/memo_interfaces.sysml +67 -58
  189. package/src/architecture/logical/memo_architecture_logical.sysml +13 -0
  190. package/src/architecture/logical/structure/memo_logical_structure.sysml +27 -8
  191. package/src/architecture/operational/context/stakeholders/memo_stakeholders.sysml +4 -1
  192. package/src/architecture/operational/memo_architecture_operational.sysml +19 -0
  193. package/src/architecture/operational/scenarios/memo_scenarios.sysml +9 -8
  194. package/src/architecture/operational/structure/memo_operational.sysml +5 -2
  195. package/src/architecture/operational/use_cases/memo_use_cases.sysml +16 -8
  196. package/src/architecture/realization/deployment/memo_deployment.sysml +30 -10
  197. package/src/architecture/realization/memo_architecture_realization.sysml +13 -0
  198. package/src/architecture/realization/physical/memo_physical_architecture.sysml +61 -0
  199. package/src/architecture/variability/memo_variability.sysml +87 -0
  200. package/src/artifacts/configuration_management/memo_configuration_management.sysml +95 -3
  201. package/src/artifacts/core/memo_controlled_artifacts.sysml +4 -2
  202. package/src/artifacts/standards/cfr_21_820.sysml +12 -24
  203. package/src/artifacts/standards/fda_cybersecurity_2023.sysml +13 -20
  204. package/src/artifacts/standards/iec_60601_1.sysml +16 -32
  205. package/src/artifacts/standards/iec_60601_1_2.sysml +5 -10
  206. package/src/artifacts/standards/iec_60812.sysml +4 -8
  207. package/src/artifacts/standards/iec_62304.sysml +607 -47
  208. package/src/artifacts/standards/iec_62366_1.sysml +12 -24
  209. package/src/artifacts/standards/iec_81001_5_1.sysml +8 -16
  210. package/src/artifacts/standards/iso_13485.sysml +12 -24
  211. package/src/artifacts/standards/iso_14971.sysml +118 -20
  212. package/src/artifacts/standards/iso_iec_ieee_42010.sysml +3 -6
  213. package/src/artifacts/standards/memo_artifacts_standards_traceability.sysml +14 -4
  214. package/src/artifacts/templates/dhf/fda-cybersecurity/postmarket-surveillance.md +1 -2
  215. package/src/artifacts/templates/dhf/fda-cybersecurity/vuln-assessment.md +1 -2
  216. package/src/artifacts/templates/dhf/iec-62304/sad.md +1 -2
  217. package/src/artifacts/templates/dhf/iec-62304/sbom.md +1 -2
  218. package/src/artifacts/templates/dhf/iec-62304/sdp.md +1 -2
  219. package/src/artifacts/templates/dhf/iec-62304/soup.md +3 -5
  220. package/src/artifacts/templates/dhf/system/sad.md +1 -1
  221. package/src/artifacts/templates/dhf/system/standards-checklist.md +2 -2
  222. package/src/artifacts/templates/dhf/system/standards-traceability.md +1 -1
  223. package/src/assurance/cybersecurity/memo_cybersecurity.sysml +339 -13
  224. package/src/assurance/human_factors/memo_human_factors.sysml +6 -2
  225. package/src/assurance/safety_risk/analysis/memo_fmea.sysml +7 -3
  226. package/src/assurance/safety_risk/memo_risk.sysml +39 -1
  227. package/src/core/common/memo_common.sysml +61 -68
  228. package/src/core/enumerations/memo_enumerations.sysml +93 -9
  229. package/src/core/relationships/memo_relationships.sysml +17 -11
  230. package/src/core/relationships/memo_workspace_membership.sysml +284 -0
  231. package/src/core/semantics/semantics.sysml +58 -0
  232. package/src/core/terminology/terminology.sysml +7 -0
  233. package/src/memo_namespaces.sysml +6 -0
  234. package/src/methodology/archetypes/memo_archetypes.sysml +8 -16
  235. package/src/methodology/core/memo_core.sysml +85 -29
  236. package/src/methodology/profiles/memo_profiles.sysml +217 -61
  237. package/src/methodology/workflow/memo_workflow.sysml +28 -0
  238. package/src/rules/closure/closure_rules.sysml +250 -4
  239. package/src/rules/crosslayer/cross_layer_rules.sysml +11 -0
  240. package/src/rules/ontology/ontology_invariants.sysml +288 -48
  241. package/src/rules/quantitative/quantitative_rules.sysml +4 -0
  242. package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +28 -28
  243. package/src/viewpoints/clinical/clinical_viewpoint.sysml +2 -3
  244. package/src/viewpoints/context/context_viewpoint.sysml +2 -3
  245. package/src/viewpoints/context/views/system_context_view/system_context_view.sysml +3 -5
  246. package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +2 -3
  247. package/src/viewpoints/definitions/memo_view_layout.sysml +150 -0
  248. package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +0 -4
  249. package/src/viewpoints/functional/functional_viewpoint.sysml +2 -3
  250. package/src/viewpoints/functional/views/function_allocation_view/function_allocation_view.sysml +2 -4
  251. package/src/viewpoints/functional/views/system_functional_tree_view/system_functional_tree_view.sysml +2 -4
  252. package/src/viewpoints/logical/logical_viewpoint.sysml +2 -3
  253. package/src/viewpoints/logical/views/logical_architecture_view/logical_architecture_view.sysml +2 -4
  254. package/src/viewpoints/operational/operational_viewpoint.sysml +2 -3
  255. package/src/viewpoints/operational/views/use_case_view/use_case_view.sysml +3 -5
  256. package/src/viewpoints/physical/physical_viewpoint.sysml +2 -3
  257. package/src/viewpoints/physical/views/network_topology_view/network_topology_view.sysml +2 -4
  258. package/src/viewpoints/physical/views/physical_bom_view/physical_bom_view.sysml +2 -4
  259. package/src/viewpoints/rendering/memo_rendering.sysml +50 -98
  260. package/src/viewpoints/requirements/requirements_viewpoint.sysml +2 -3
  261. package/src/viewpoints/requirements/views/requirements_traceability_view/requirements_traceability_view.sysml +2 -4
  262. package/src/viewpoints/risk/risk_viewpoint.sysml +2 -3
  263. package/src/viewpoints/risk/views/risk_chain_view/risk_chain_view.sysml +2 -4
  264. package/src/viewpoints/software/software_viewpoint.sysml +2 -3
  265. package/src/viewpoints/software/views/software_architecture_view/software_architecture_view.sysml +3 -5
  266. package/src/viewpoints/stakeholders_concerns/memo_stakeholders_concerns.sysml +11 -29
  267. package/src/viewpoints/ui_layout/ui_layout_viewpoint.sysml +2 -3
  268. package/src/viewpoints/ui_layout/views/screen_layout_view/screen_layout_view.sysml +1 -1
  269. package/src/viewpoints/usability/usability_viewpoint.sysml +2 -3
  270. package/src/viewpoints/verification/verification_viewpoint.sysml +2 -3
  271. package/src/viewpoints/verification/views/verification_coverage_view/verification_coverage_view.sysml +2 -4
  272. package/stage1/syside-67f92dc96ba75cd05b5c8d13.ids.gz +0 -0
  273. package/stage1/syside-67f92dc96ba75cd05b5c8d13.json.gz +0 -0
  274. package/templates/default/memo.package.yaml +6 -1
  275. package/templates/default/model/catalog/architecture/system.sysml +7 -3
  276. package/templates/default/model/{catalog → methodology}/project.sysml +3 -4
  277. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.viewlayout +0 -47
  278. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.viewlayout +0 -94
  279. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.viewlayout +0 -13
  280. package/examples/ui-screen-regions/model/catalog/relationships.sysml +0 -8
  281. package/extensions/aadl/src/methodology/aadl_methodology.sysml +0 -19
  282. package/extensions/clinical/src/methodology/clinical_methodology.sysml +0 -24
  283. package/extensions/cloud/src/methodology/cloud_methodology.sysml +0 -19
  284. package/extensions/container/src/methodology/container_methodology.sysml +0 -19
  285. package/extensions/messaging/src/methodology/messaging_methodology.sysml +0 -19
  286. package/extensions/ros/src/methodology/ros_methodology.sysml +0 -27
  287. package/extensions/template/src/extension.sysml +0 -39
  288. package/templates/connected-device/memo.package.yaml +0 -13
  289. package/templates/connected-device/model/catalog/architecture/system.sysml +0 -5
  290. package/templates/connected-device/model/catalog/artifacts/catalog.sysml +0 -5
  291. package/templates/connected-device/model/catalog/assurance/requirements.sysml +0 -7
  292. package/templates/connected-device/model/catalog/project.sysml +0 -30
  293. package/templates/connected-device/package.json +0 -8
  294. package/templates/connected-device/syside.toml +0 -13
  295. package/templates/infusion-pump/memo.package.yaml +0 -13
  296. package/templates/infusion-pump/model/catalog/architecture/system.sysml +0 -5
  297. package/templates/infusion-pump/model/catalog/artifacts/catalog.sysml +0 -5
  298. package/templates/infusion-pump/model/catalog/assurance/requirements.sysml +0 -7
  299. package/templates/infusion-pump/model/catalog/project.sysml +0 -30
  300. package/templates/infusion-pump/package.json +0 -8
  301. package/templates/infusion-pump/syside.toml +0 -13
  302. package/templates/monitoring-device/memo.package.yaml +0 -13
  303. package/templates/monitoring-device/model/catalog/architecture/system.sysml +0 -5
  304. package/templates/monitoring-device/model/catalog/artifacts/catalog.sysml +0 -5
  305. package/templates/monitoring-device/model/catalog/assurance/requirements.sysml +0 -7
  306. package/templates/monitoring-device/model/catalog/project.sysml +0 -30
  307. package/templates/monitoring-device/package.json +0 -8
  308. package/templates/monitoring-device/syside.toml +0 -13
  309. package/templates/samd/memo.package.yaml +0 -13
  310. package/templates/samd/model/catalog/architecture/system.sysml +0 -5
  311. package/templates/samd/model/catalog/artifacts/catalog.sysml +0 -5
  312. package/templates/samd/model/catalog/assurance/requirements.sysml +0 -7
  313. package/templates/samd/model/catalog/project.sysml +0 -30
  314. package/templates/samd/package.json +0 -8
  315. package/templates/samd/syside.toml +0 -13
@@ -18,76 +18,76 @@ package memo_examples_ui_screen_regions_assurance_safety_risk {
18
18
  private import memo_core_common::*;
19
19
  private import memo_core_common::MemoIdentity;
20
20
  item hzWrongRate : Hazard {
21
- @MemoIdentity { :>> providedId = "UIR-HZ-001"; } attribute :>> name = "InfusionAtIncorrectRate";
21
+ @MemoIdentity { :>> providedId = "UIR-HZ-001"; :>> label = "InfusionAtIncorrectRate"; }
22
22
  attribute :>> hazardType = HazardTypeKind::informationError;
23
23
  attribute :>> severity = SeverityKind::serious;
24
24
  attribute :>> foreseeable = true;
25
25
  }
26
26
 
27
27
  part rcRateConfirm : RiskControlMeasure {
28
- @MemoIdentity { :>> providedId = "UIR-RC-001"; } attribute :>> name = "RateChangeConfirmationDialog";
28
+ @MemoIdentity { :>> providedId = "UIR-RC-001"; :>> label = "RateChangeConfirmationDialog"; }
29
29
  @MemoIdentity { :>> shortDescription = "Explicit confirmation step before a rate change applies."; }
30
- attribute :>> description = "A confirmation dialog restates the requested rate in words and numerals before the change is committed, so a mis-set decimal point has a second chance to be caught.";
30
+ doc /* A confirmation dialog restates the requested rate in words and numerals before the change is committed, so a mis-set decimal point has a second chance to be caught. */
31
31
  attribute :>> controlKind = RiskControlKind::protectiveMeasure;
32
32
  attribute :>> implementationKind = RiskControlImplementationKind::softwareDesign;
33
33
  }
34
34
 
35
35
  item hzWrongDrug : Hazard {
36
- @MemoIdentity { :>> providedId = "UIR-HZ-002"; } attribute :>> name = "TherapyConfiguredForWrongDrug";
36
+ @MemoIdentity { :>> providedId = "UIR-HZ-002"; :>> label = "TherapyConfiguredForWrongDrug"; }
37
37
  attribute :>> hazardType = HazardTypeKind::informationError;
38
38
  attribute :>> severity = SeverityKind::serious;
39
39
  attribute :>> foreseeable = true;
40
40
  }
41
41
 
42
42
  part rcDrugLibraryGuard : RiskControlMeasure {
43
- @MemoIdentity { :>> providedId = "UIR-RC-002"; } attribute :>> name = "CareAreaDrugLibraryGuard";
43
+ @MemoIdentity { :>> providedId = "UIR-RC-002"; :>> label = "CareAreaDrugLibraryGuard"; }
44
44
  @MemoIdentity { :>> shortDescription = "Restrict selection to enabled care-area drug-library entries."; }
45
- attribute :>> description = "Filters the dynamic selector to the active care-area formulary and validates the selected drug and concentration before its dosing limits are used.";
45
+ doc /* Filters the dynamic selector to the active care-area formulary and validates the selected drug and concentration before its dosing limits are used. */
46
46
  attribute :>> controlKind = RiskControlKind::inherentSafeDesign;
47
47
  attribute :>> implementationKind = RiskControlImplementationKind::softwareDesign;
48
48
  }
49
49
 
50
50
  item hzUnexpectedPowerLoss : Hazard {
51
- @MemoIdentity { :>> providedId = "UIR-HZ-003"; } attribute :>> name = "UnexpectedTherapyInterruptionFromPowerLoss";
51
+ @MemoIdentity { :>> providedId = "UIR-HZ-003"; :>> label = "UnexpectedTherapyInterruptionFromPowerLoss"; }
52
52
  attribute :>> hazardType = HazardTypeKind::energyExposure;
53
53
  attribute :>> severity = SeverityKind::critical;
54
54
  attribute :>> foreseeable = true;
55
55
  }
56
56
 
57
57
  part rcLowBatteryProminence : RiskControlMeasure {
58
- @MemoIdentity { :>> providedId = "UIR-RC-003"; } attribute :>> name = "ProminentLowBatteryStatus";
58
+ @MemoIdentity { :>> providedId = "UIR-RC-003"; :>> label = "ProminentLowBatteryStatus"; }
59
59
  @MemoIdentity { :>> shortDescription = "Update and emphasize low remaining battery status within one second."; }
60
- attribute :>> description = "Monitors battery telemetry and changes the status indicator's color and icon state at the low-runtime threshold so the clinician can restore power before therapy interruption.";
60
+ doc /* Monitors battery telemetry and changes the status indicator's color and icon state at the low-runtime threshold so the clinician can restore power before therapy interruption. */
61
61
  attribute :>> controlKind = RiskControlKind::monitoring;
62
62
  attribute :>> implementationKind = RiskControlImplementationKind::softwareDesign;
63
63
  }
64
64
 
65
65
  item hzIncorrectDeliveredVolumeAssessment : Hazard {
66
- @MemoIdentity { :>> providedId = "UIR-HZ-004"; } attribute :>> name = "IncorrectDeliveredVolumeAssessment";
66
+ @MemoIdentity { :>> providedId = "UIR-HZ-004"; :>> label = "IncorrectDeliveredVolumeAssessment"; }
67
67
  attribute :>> hazardType = HazardTypeKind::informationError;
68
68
  attribute :>> severity = SeverityKind::serious;
69
69
  attribute :>> foreseeable = true;
70
70
  }
71
71
 
72
72
  part rcDisplayFreshnessMonitor : RiskControlMeasure {
73
- @MemoIdentity { :>> providedId = "UIR-RC-004"; } attribute :>> name = "InfusionDisplayFreshnessMonitor";
73
+ @MemoIdentity { :>> providedId = "UIR-RC-004"; :>> label = "InfusionDisplayFreshnessMonitor"; }
74
74
  @MemoIdentity { :>> shortDescription = "Refresh displayed rate and volume at 1 Hz and detect stale telemetry."; }
75
- attribute :>> description = "Maintains a one-second display age budget for infusion status and detects a missed telemetry refresh before stale values can persist.";
75
+ doc /* Maintains a one-second display age budget for infusion status and detects a missed telemetry refresh before stale values can persist. */
76
76
  attribute :>> controlKind = RiskControlKind::monitoring;
77
77
  attribute :>> implementationKind = RiskControlImplementationKind::softwareDesign;
78
78
  }
79
79
 
80
80
  item hzIncorrectEventChronology : Hazard {
81
- @MemoIdentity { :>> providedId = "UIR-HZ-005"; } attribute :>> name = "IncorrectTherapyEventChronology";
81
+ @MemoIdentity { :>> providedId = "UIR-HZ-005"; :>> label = "IncorrectTherapyEventChronology"; }
82
82
  attribute :>> hazardType = HazardTypeKind::informationError;
83
83
  attribute :>> severity = SeverityKind::minor;
84
84
  attribute :>> foreseeable = true;
85
85
  }
86
86
 
87
87
  part rcClockFreshnessCheck : RiskControlMeasure {
88
- @MemoIdentity { :>> providedId = "UIR-RC-005"; } attribute :>> name = "SynchronizedClockFreshnessCheck";
88
+ @MemoIdentity { :>> providedId = "UIR-RC-005"; :>> label = "SynchronizedClockFreshnessCheck"; }
89
89
  @MemoIdentity { :>> shortDescription = "Synchronize the display clock and bound visible time error."; }
90
- attribute :>> description = "Checks the displayed clock against the synchronized device clock and refreshes the visible minute at rollover.";
90
+ doc /* Checks the displayed clock against the synchronized device clock and refreshes the visible minute at rollover. */
91
91
  attribute :>> controlKind = RiskControlKind::plausibilityCheck;
92
92
  attribute :>> implementationKind = RiskControlImplementationKind::softwareDesign;
93
93
  }
@@ -22,7 +22,7 @@ package memo_examples_ui_screen_regions_assurance_verification_validation {
22
22
 
23
23
  private import memo_core_common::MemoIdentity;
24
24
  verification vcRateChange : VerificationCase {
25
- @MemoIdentity { :>> providedId = "UIR-VER-001"; } attribute :>> name = "VerifyRateChangeConfirmation";
25
+ @MemoIdentity { :>> providedId = "UIR-VER-001"; :>> label = "VerifyRateChangeConfirmation"; }
26
26
  attribute :>> methodKind = MemoVerificationMethodKind::test;
27
27
  attribute :>> acceptanceCriteria = "A rate change cannot reach the controller until the displayed value is explicitly confirmed.";
28
28
  attribute :>> status = ElementStatusKind::approved;
@@ -32,14 +32,14 @@ package memo_examples_ui_screen_regions_assurance_verification_validation {
32
32
 
33
33
  part evRateChange : MemoEvidence {
34
34
  attribute :>> evidenceKind = EvidenceKind::evidence;
35
- @MemoIdentity { :>> providedId = "UIR-EV-001"; } attribute :>> name = "RateChangeConfirmationTestRecord";
35
+ @MemoIdentity { :>> providedId = "UIR-EV-001"; :>> label = "RateChangeConfirmationTestRecord"; }
36
36
  attribute :>> version = "planned";
37
37
  attribute :>> evidenceType = "test record";
38
38
  attribute :>> integrityStatus = "planned";
39
39
  }
40
40
 
41
41
  verification vcDrugLibrarySelection : VerificationCase {
42
- @MemoIdentity { :>> providedId = "VER-002"; } attribute :>> name = "VerifyCareAreaDrugLibrarySelection";
42
+ @MemoIdentity { :>> providedId = "VER-002"; :>> label = "VerifyCareAreaDrugLibrarySelection"; }
43
43
  attribute :>> methodKind = MemoVerificationMethodKind::test;
44
44
  attribute :>> acceptanceCriteria = "Only enabled care-area drug and concentration records are selectable, and every selection supplies the matching dosing limits.";
45
45
  attribute :>> status = ElementStatusKind::approved;
@@ -49,14 +49,14 @@ package memo_examples_ui_screen_regions_assurance_verification_validation {
49
49
 
50
50
  part evDrugLibrarySelection : MemoEvidence {
51
51
  attribute :>> evidenceKind = EvidenceKind::evidence;
52
- @MemoIdentity { :>> providedId = "EVD-002"; } attribute :>> name = "DrugLibrarySelectionTestRecord";
52
+ @MemoIdentity { :>> providedId = "EVD-002"; :>> label = "DrugLibrarySelectionTestRecord"; }
53
53
  attribute :>> version = "planned";
54
54
  attribute :>> evidenceType = "test record";
55
55
  attribute :>> integrityStatus = "planned";
56
56
  }
57
57
 
58
58
  verification vcInfusionStatusContent : VerificationCase {
59
- @MemoIdentity { :>> providedId = "VER-003"; } attribute :>> name = "VerifyInfusionStatusContentAndFreshness";
59
+ @MemoIdentity { :>> providedId = "VER-003"; :>> label = "VerifyInfusionStatusContentAndFreshness"; }
60
60
  attribute :>> methodKind = MemoVerificationMethodKind::test;
61
61
  attribute :>> acceptanceCriteria = "Time, battery, active rate, drug identity, and total delivered volume satisfy their content, accuracy, and latency criteria under normal and threshold-transition conditions.";
62
62
  attribute :>> status = ElementStatusKind::approved;
@@ -67,7 +67,7 @@ package memo_examples_ui_screen_regions_assurance_verification_validation {
67
67
 
68
68
  part evInfusionStatusContent : MemoEvidence {
69
69
  attribute :>> evidenceKind = EvidenceKind::evidence;
70
- @MemoIdentity { :>> providedId = "EVD-003"; } attribute :>> name = "InfusionStatusDisplayTestRecord";
70
+ @MemoIdentity { :>> providedId = "EVD-003"; :>> label = "InfusionStatusDisplayTestRecord"; }
71
71
  attribute :>> version = "planned";
72
72
  attribute :>> evidenceType = "test record";
73
73
  attribute :>> integrityStatus = "planned";
@@ -51,8 +51,7 @@ package memo_examples_ui_screen_regions_viewpoints_functional_views_ui_functiona
51
51
  attribute :>> diagramType = "bdd";
52
52
  attribute :>> autoPopulate = true;
53
53
  part :>> selectionQuery {
54
- @MemoIdentity { :>> providedId = "QRY-102"; }
55
- attribute :>> name = "UIFunctionalTreeQuery";
54
+ @MemoIdentity { :>> providedId = "QRY-102"; :>> label = "UIFunctionalTreeQuery"; }
56
55
  attribute :>> includeElementKinds = ("SystemFunction", "UIAction", "UIElement", "UserInterface");
57
56
  attribute :>> includeRelationshipKinds = ("Composes", "ElementTriggersAction", "Performs", "AllocatedTo");
58
57
  attribute :>> includeLayers = ("functions", "implementation");
@@ -51,8 +51,7 @@ package memo_examples_ui_screen_regions_viewpoints_requirements_views_ui_require
51
51
  attribute :>> diagramType = "req";
52
52
  attribute :>> autoPopulate = true;
53
53
  part :>> selectionQuery {
54
- @MemoIdentity { :>> providedId = "QRY-101"; }
55
- attribute :>> name = "UIRequirementsTraceQuery";
54
+ @MemoIdentity { :>> providedId = "QRY-101"; :>> label = "UIRequirementsTraceQuery"; }
56
55
  attribute :>> includeElementKinds = ("Need", "Requirement", "UIElement", "SystemFunction", "VerificationCase");
57
56
  attribute :>> includeRelationshipKinds = ("DerivesFrom", "SatisfiedBy", "VerifiedBy");
58
57
  attribute :>> includeLayers = ("requirements", "implementation", "functions", "assurance");
@@ -51,8 +51,7 @@ package memo_examples_ui_screen_regions_viewpoints_risk_views_ui_risk_chain {
51
51
  attribute :>> diagramType = "risk";
52
52
  attribute :>> autoPopulate = true;
53
53
  part :>> selectionQuery {
54
- @MemoIdentity { :>> providedId = "QRY-103"; }
55
- attribute :>> name = "UIRiskChainQuery";
54
+ @MemoIdentity { :>> providedId = "QRY-103"; :>> label = "UIRiskChainQuery"; }
56
55
  attribute :>> includeElementKinds = ("UseError", "Hazard", "RiskControlMeasure", "Requirement", "UIElement", "SystemFunction", "VerificationCase");
57
56
  attribute :>> includeRelationshipKinds = ("ErrorAtElement", "Causes", "Mitigates", "ControlImplementedBy", "DerivesFrom", "VerifiedBy");
58
57
  attribute :>> includeLayers = ("human_factors", "risk", "requirements", "implementation", "functions", "assurance");
@@ -1,4 +1,4 @@
1
- // UI screen regions — project identity and method binding.
1
+ // UI screen regions — model identity and method binding.
2
2
  //
3
3
  // The native entrypoint for this project. Everything that decides what the
4
4
  // model means is here or reachable from here: the imports name the reusable
@@ -33,10 +33,9 @@ package memo_examples_ui_screen_regions_project {
33
33
 
34
34
  private import memo_core_common::*;
35
35
  private import memo_core_common::MemoIdentity;
36
- part uiScreenRegionsBinding : ProjectMethodBinding {
37
- @MemoIdentity { :>> providedId = "PMB-UIR-001"; }
38
- attribute :>> name = "UIScreenRegionsProjectMethodBinding";
39
- attribute :>> projectName = "UI Screen Regions";
36
+ part uiScreenRegionsBinding : ModelMethodBinding {
37
+ @MemoIdentity { :>> providedId = "PMB-UIR-001"; :>> label = "UIScreenRegionsModelMethodBinding"; }
38
+ attribute :>> modelName = "UI Screen Regions";
40
39
  // The default methodology selects everything the resolved ontology
41
40
  // provides, which is what makes the UI layout rules CR-MED-110…113
42
41
  // evaluable against this model.
@@ -1,31 +1,80 @@
1
1
  # Extensions
2
2
 
3
3
  An extension is a **way to model**, not a sample. It is a reusable ontology
4
- package that specializes the base and is selected by a methodology or a project
5
- binding — so extensions live here, beside `src/`, and not under `examples/`.
4
+ package that specializes the base and is brought into a project by importing
5
+ it — so extensions live here, beside `src/`, and not under `examples/`.
6
6
  Examples *use* extensions; `examples/ros-mobile-robot` demonstrates one.
7
7
 
8
- MEMO defines no extension metaclass. An extension is a plain SysML package:
8
+ MEMO defines no extension metaclass and no extension methodology. An extension
9
+ is plain SysML packages:
9
10
 
10
11
  - outside `src/` and outside the `memo::` namespace;
11
12
  - with a `memo.package.yaml` carrying identity and `sysmlDir` only (the semantic
12
13
  fields `type` / `extends` / `usage` / `ontologies` / `methodology` / `modules`
13
14
  are rejected);
14
15
  - whose SysML **specializes** base types;
15
- - plus a `MethodologyDefinition` naming `baseMethodology`, `scopeMode`, and its
16
- own `includedModule`.
16
+ - with one **facade** package, `memo_extension_<directory>`, that publicly
17
+ imports every other package the extension ships and every extension it builds
18
+ on.
17
19
 
18
- `template/` is the skeleton. The build round-trips every extension into its own
19
- KPAR and resolves it with `syside check`, exactly as it does the base.
20
-
21
- ## Composition happens at the project binding
20
+ The facade **is** the extension as the model sees it: a project imports it,
21
+ another extension imports it, and nothing else identifies an extension.
22
22
 
23
- `MethodologyDefinition.baseMethodology` is `[0..1]` — single inheritance, and
24
- deliberate. Extensions therefore **do not chain**. Both
25
- `MethodologyDefinition.includedModule` and `ProjectMethodBinding.includedModule`
26
- are `String[0..*]`, so a project combines any number of independent extensions
27
- by listing their modules in its own binding. That is *the* composition
28
- mechanism; nothing else is supported.
23
+ `template/` is the skeleton. The build round-trips every extension into its own
24
+ KPAR (`memo-extension-<directory>`) and resolves the whole tree with `syside check`,
25
+ exactly as it does the base.
26
+
27
+ ## Each extension is its own package
28
+
29
+ An extension is built, versioned and depended on by itself. Its KPAR declares
30
+ what it uses: the base ontology and default methodology, the SysML libraries,
31
+ and **every other extension its source imports** (`import memo_extension_<name>`
32
+ is read from the files, not listed twice). `ros` therefore declares
33
+ `memo-extension-messaging` and `memo-extension-container`; `clinical` declares
34
+ neither. Add an `import` of another extension and the next build records the
35
+ dependency; remove it and the dependency goes.
36
+
37
+ ## One import brings an extension in
38
+
39
+ ```sysml
40
+ package memo_examples_ros_mobile_robot_project {
41
+ public import memo_extension_ros::*;
42
+
43
+ part projectBinding : ModelMethodBinding {
44
+ ref :>> selectedMethodology = mdDefaultDefinition;
45
+ }
46
+ }
47
+ ```
48
+
49
+ A methodology selects the packages that the package declaring it **publicly
50
+ imports**, followed through their public imports in turn; a project adds to that
51
+ selection the same way, from the package that declares its binding. That is
52
+ SysML's own meaning of a public import — it passes the imported members on to
53
+ whoever imports the importing package — so there is no list of package names
54
+ beside it, and a misspelled package is an import the compiler rejects. A
55
+ private import makes the names visible to the importing package and selects
56
+ nothing: the ROS package privately imports the architecture packages it
57
+ specializes, and selecting ROS does not select them.
58
+
59
+ So an extension's facade publicly imports what selecting the extension has to
60
+ select:
61
+
62
+ - **its own packages.** `aadl`'s facade publicly imports
63
+ `memo_extension_aadl_runtime` and `memo_extension_aadl_correspondence`, the
64
+ packages that declare its definitions and rules. A facade that left one out
65
+ would leave it out of every project that imports the extension.
66
+ - **the extensions it builds on.** `ros` publicly imports `memo_extension_messaging`
67
+ and `memo_extension_container`. The dependency is declared once, by that
68
+ import, and it is the same line the KPAR build reads to record the dependency,
69
+ so the two cannot disagree.
70
+
71
+ A test holds each facade's public imports equal to the packages the directory
72
+ declares plus the extensions it imports, and checks that every example using an
73
+ extension's definitions publicly imports its facade from the entrypoint, or one
74
+ whose facade imports it.
75
+
76
+ A project's or a supplier's own packages outside MEMO are added the same way: a
77
+ public import in the binding's package.
29
78
 
30
79
  ## Rule 1 — use native mechanisms first; extension relations specialize base ones
31
80
 
@@ -71,7 +120,7 @@ the prefix is what makes that check something an author can satisfy by
71
120
  construction rather than by luck.
72
121
 
73
122
  Enumeration literals are not definitions and are not prefixed —
74
- `RosReliabilityKind::reliable`, not `RosReliabilityKind::rosReliable`.
123
+ `RosDurabilityKind::transientLocal`, not `RosDurabilityKind::rosTransientLocal`.
75
124
 
76
125
  ## What an extension must not do
77
126
 
@@ -7,7 +7,7 @@
7
7
  # (`type`, `extends`, `usage`, `ontologies`, `methodology`, `modules`) were
8
8
  # removed at the native semantic flip and are now rejected if present.
9
9
  name: '@memoarchitect/extension-aadl'
10
- version: 0.13.2
10
+ version: 0.15.1
11
11
  description: AADL (SAE AS5506) correspondence profile and runtime component families
12
12
  license: MIT
13
13
  tags:
@@ -1,5 +1,8 @@
1
- // The AADL extension's public facade. A project includes the module
2
- // `memo_extension_aadl` in its binding and imports this package.
1
+ // The AADL extension's public facade. It publicly imports every package the
2
+ // extension ships, so one import brings the extension into a project: a
3
+ // project that imports it sees the definitions, and one that imports it
4
+ // publicly from its entrypoint package (or a methodology that does) selects
5
+ // every package below.
3
6
  package memo_extension_aadl {
4
7
  public import memo_extension_aadl_runtime::*;
5
8
  public import memo_extension_aadl_correspondence::*;
@@ -23,127 +23,106 @@ package memo_extension_aadl_correspondence {
23
23
  private import memo_core_common::MemoIdentity;
24
24
  // ── Component categories ────────────────────────────────────────────
25
25
  part aadlCorrProcess : CorrespondenceRule {
26
- @MemoIdentity { :>> providedId = "EXT-AADL-C-001"; }
27
- attribute :>> name = "ProcessCorrespondence";
26
+ @MemoIdentity { :>> providedId = "EXT-AADL-C-001"; :>> label = "ProcessCorrespondence"; }
28
27
  attribute :>> ruleExpression = "memo_extension_aadl_runtime::AadlProcess <-> AADL component category `process`";
29
- attribute :>> description = "A MEMO SoftwareComponent with runtimeKind = process, carrying addressSpaceIsolated.";
28
+ doc /* A MEMO SoftwareComponent with runtimeKind = process, carrying addressSpaceIsolated. */
30
29
  }
31
30
  part aadlCorrThread : CorrespondenceRule {
32
- @MemoIdentity { :>> providedId = "EXT-AADL-C-002"; }
33
- attribute :>> name = "ThreadCorrespondence";
31
+ @MemoIdentity { :>> providedId = "EXT-AADL-C-002"; :>> label = "ThreadCorrespondence"; }
34
32
  attribute :>> ruleExpression = "memo_extension_aadl_runtime::AadlThread <-> AADL component category `thread`";
35
- attribute :>> description = "Schedulable unit inside one process; owningProcessName names the containing process.";
33
+ doc /* Schedulable unit inside one process; owningProcessName names the containing process. */
36
34
  }
37
35
  part aadlCorrVirtualProcessor : CorrespondenceRule {
38
- @MemoIdentity { :>> providedId = "EXT-AADL-C-003"; }
39
- attribute :>> name = "VirtualProcessorCorrespondence";
36
+ @MemoIdentity { :>> providedId = "EXT-AADL-C-003"; :>> label = "VirtualProcessorCorrespondence"; }
40
37
  attribute :>> ruleExpression = "memo_extension_aadl_runtime::AadlVirtualProcessor <-> AADL component category `virtual processor`";
41
- attribute :>> description = "An ARINC 653 partition. partitionBudget is the guaranteed time and memory; isolationMechanism is what enforces it.";
38
+ doc /* An ARINC 653 partition. partitionBudget is the guaranteed time and memory; isolationMechanism is what enforces it. */
42
39
  }
43
40
  part aadlCorrProcessor : CorrespondenceRule {
44
- @MemoIdentity { :>> providedId = "EXT-AADL-C-004"; }
45
- attribute :>> name = "ProcessorCorrespondence";
41
+ @MemoIdentity { :>> providedId = "EXT-AADL-C-004"; :>> label = "ProcessorCorrespondence"; }
46
42
  attribute :>> ruleExpression = "memo_architecture_realization_physical::ProcessingNode <-> AADL component category `processor`";
47
43
  }
48
44
  part aadlCorrMemory : CorrespondenceRule {
49
- @MemoIdentity { :>> providedId = "EXT-AADL-C-005"; }
50
- attribute :>> name = "MemoryCorrespondence";
45
+ @MemoIdentity { :>> providedId = "EXT-AADL-C-005"; :>> label = "MemoryCorrespondence"; }
51
46
  attribute :>> ruleExpression = "memo_architecture_realization_physical::MemoryDevice <-> AADL component category `memory`";
52
47
  }
53
48
  part aadlCorrBus : CorrespondenceRule {
54
- @MemoIdentity { :>> providedId = "EXT-AADL-C-006"; }
55
- attribute :>> name = "BusCorrespondence";
49
+ @MemoIdentity { :>> providedId = "EXT-AADL-C-006"; :>> label = "BusCorrespondence"; }
56
50
  attribute :>> ruleExpression = "memo_architecture_implementation_hardware_electrical::NetworkMedium <-> AADL component category `bus`";
57
51
  }
58
52
  part aadlCorrSystem : CorrespondenceRule {
59
- @MemoIdentity { :>> providedId = "EXT-AADL-C-007"; }
60
- attribute :>> name = "SystemCorrespondence";
53
+ @MemoIdentity { :>> providedId = "EXT-AADL-C-007"; :>> label = "SystemCorrespondence"; }
61
54
  attribute :>> ruleExpression = "memo_architecture_logical_structure::System <-> AADL component category `system`";
62
- attribute :>> description = "AADL's system is the composition unit, which is MEMO's logical System rather than any runtime element.";
55
+ doc /* AADL's system is the composition unit, which is MEMO's logical System rather than any runtime element. */
63
56
  }
64
57
 
65
58
  // ── Bindings. AADL's analytic power is that everything is bound to
66
59
  // something, and the binding is where latency, bandwidth, and fault
67
60
  // propagation accrue. MEMO has all three (plan C1). ────────────────────
68
61
  part aadlCorrProcessorBinding : CorrespondenceRule {
69
- @MemoIdentity { :>> providedId = "EXT-AADL-C-010"; }
70
- attribute :>> name = "ActualProcessorBindingCorrespondence";
62
+ @MemoIdentity { :>> providedId = "EXT-AADL-C-010"; :>> label = "ActualProcessorBindingCorrespondence"; }
71
63
  attribute :>> ruleExpression = "memo_architecture_realization_deployment::DeploysTo <-> AADL property `Actual_Processor_Binding`";
72
64
  }
73
65
  part aadlCorrMemoryBinding : CorrespondenceRule {
74
- @MemoIdentity { :>> providedId = "EXT-AADL-C-011"; }
75
- attribute :>> name = "ActualMemoryBindingCorrespondence";
66
+ @MemoIdentity { :>> providedId = "EXT-AADL-C-011"; :>> label = "ActualMemoryBindingCorrespondence"; }
76
67
  attribute :>> ruleExpression = "memo_architecture_realization_deployment::MemoryBinding <-> AADL property `Actual_Memory_Binding`";
77
68
  }
78
69
  part aadlCorrConnectionBinding : CorrespondenceRule {
79
- @MemoIdentity { :>> providedId = "EXT-AADL-C-012"; }
80
- attribute :>> name = "ActualConnectionBindingCorrespondence";
70
+ @MemoIdentity { :>> providedId = "EXT-AADL-C-012"; :>> label = "ActualConnectionBindingCorrespondence"; }
81
71
  attribute :>> ruleExpression = "memo_architecture_realization_deployment::ConnectionBinding <-> AADL property `Actual_Connection_Binding`";
82
- attribute :>> description = "The bound element is the ComponentExchange, because the exchange is what owns the budget the medium spends.";
72
+ doc /* The bound element is the ComponentExchange, because the exchange is what owns the budget the medium spends. */
83
73
  }
84
74
 
85
75
  // ── Ports and flows ─────────────────────────────────────────────────
86
76
  part aadlCorrPortCategory : CorrespondenceRule {
87
- @MemoIdentity { :>> providedId = "EXT-AADL-C-020"; }
88
- attribute :>> name = "PortCategoryCorrespondence";
77
+ @MemoIdentity { :>> providedId = "EXT-AADL-C-020"; :>> label = "PortCategoryCorrespondence"; }
89
78
  attribute :>> ruleExpression = "memo_core_enumerations::PortCategoryKind (data | 'event' | eventData) <-> AADL `data port` | `event port` | `event data port`";
90
- attribute :>> description = "Determines whether a missed deadline loses a sample or grows a queue — two failure modes with two mitigations.";
79
+ doc /* Determines whether a missed deadline loses a sample or grows a queue — two failure modes with two mitigations. */
91
80
  }
92
81
  part aadlCorrFlowSpec : CorrespondenceRule {
93
- @MemoIdentity { :>> providedId = "EXT-AADL-C-021"; }
94
- attribute :>> name = "FlowSpecificationCorrespondence";
82
+ @MemoIdentity { :>> providedId = "EXT-AADL-C-021"; :>> label = "FlowSpecificationCorrespondence"; }
95
83
  attribute :>> ruleExpression = "memo_architecture_realization_deployment::FlowSpecification (FlowSpecKind source | sink | path) <-> AADL `flow source` | `flow sink` | `flow path`";
96
84
  }
97
85
  part aadlCorrEndToEndFlow : CorrespondenceRule {
98
- @MemoIdentity { :>> providedId = "EXT-AADL-C-022"; }
99
- attribute :>> name = "EndToEndFlowCorrespondence";
86
+ @MemoIdentity { :>> providedId = "EXT-AADL-C-022"; :>> label = "EndToEndFlowCorrespondence"; }
100
87
  attribute :>> ruleExpression = "memo_architecture_realization_deployment::EndToEndFlow <-> AADL `end to end flow`";
101
88
  }
102
89
 
103
90
  // ── Properties. AADL's property sets are the technology-specific half of
104
91
  // the language; these are the ones MEMO already carries by another name.
105
92
  part aadlCorrPeriod : CorrespondenceRule {
106
- @MemoIdentity { :>> providedId = "EXT-AADL-C-030"; }
107
- attribute :>> name = "PeriodCorrespondence";
93
+ @MemoIdentity { :>> providedId = "EXT-AADL-C-030"; :>> label = "PeriodCorrespondence"; }
108
94
  attribute :>> ruleExpression = "SoftwareComponent.periodMs <-> AADL `Timing_Properties::Period` (ms)";
109
95
  }
110
96
  part aadlCorrDeadline : CorrespondenceRule {
111
- @MemoIdentity { :>> providedId = "EXT-AADL-C-031"; }
112
- attribute :>> name = "DeadlineCorrespondence";
97
+ @MemoIdentity { :>> providedId = "EXT-AADL-C-031"; :>> label = "DeadlineCorrespondence"; }
113
98
  attribute :>> ruleExpression = "SoftwareComponent.deadlineMs <-> AADL `Timing_Properties::Deadline` (ms)";
114
99
  }
115
100
  part aadlCorrComputeExecutionTime : CorrespondenceRule {
116
- @MemoIdentity { :>> providedId = "EXT-AADL-C-032"; }
117
- attribute :>> name = "ComputeExecutionTimeCorrespondence";
101
+ @MemoIdentity { :>> providedId = "EXT-AADL-C-032"; :>> label = "ComputeExecutionTimeCorrespondence"; }
118
102
  attribute :>> ruleExpression = "SoftwareComponent.wcetMs <-> upper bound of AADL `Timing_Properties::Compute_Execution_Time` (ms)";
119
- attribute :>> description = "AADL records a range; MEMO records the worst case, which is the bound a schedulability argument uses.";
103
+ doc /* AADL records a range; MEMO records the worst case, which is the bound a schedulability argument uses. */
120
104
  }
121
105
  part aadlCorrPriority : CorrespondenceRule {
122
- @MemoIdentity { :>> providedId = "EXT-AADL-C-033"; }
123
- attribute :>> name = "PriorityCorrespondence";
106
+ @MemoIdentity { :>> providedId = "EXT-AADL-C-033"; :>> label = "PriorityCorrespondence"; }
124
107
  attribute :>> ruleExpression = "SoftwareComponent.priority <-> AADL `Thread_Properties::Priority`";
125
108
  }
126
109
  part aadlCorrSchedulingProtocol : CorrespondenceRule {
127
- @MemoIdentity { :>> providedId = "EXT-AADL-C-034"; }
128
- attribute :>> name = "SchedulingProtocolCorrespondence";
110
+ @MemoIdentity { :>> providedId = "EXT-AADL-C-034"; :>> label = "SchedulingProtocolCorrespondence"; }
129
111
  attribute :>> ruleExpression = "SoftwareComponent.schedulingPolicy <-> AADL `Deployment_Properties::Scheduling_Protocol`";
130
112
  }
131
113
  part aadlCorrLatency : CorrespondenceRule {
132
- @MemoIdentity { :>> providedId = "EXT-AADL-C-035"; }
133
- attribute :>> name = "LatencyCorrespondence";
114
+ @MemoIdentity { :>> providedId = "EXT-AADL-C-035"; :>> label = "LatencyCorrespondence"; }
134
115
  attribute :>> ruleExpression = "EndToEndFlow.latencyBudgetMs <-> AADL `Communication_Properties::Latency` upper bound (ms)";
135
116
  }
136
117
  part aadlCorrBandwidth : CorrespondenceRule {
137
- @MemoIdentity { :>> providedId = "EXT-AADL-C-036"; }
138
- attribute :>> name = "BandwidthCorrespondence";
118
+ @MemoIdentity { :>> providedId = "EXT-AADL-C-036"; :>> label = "BandwidthCorrespondence"; }
139
119
  attribute :>> ruleExpression = "ConnectionBinding.allocatedBandwidth <-> AADL `Communication_Properties::Bandwidth_Budget`";
140
120
  }
141
121
 
142
122
  // ── Where the correspondence stops ──────────────────────────────────
143
123
  part aadlCorrNoCounterpart : CorrespondenceRule {
144
- @MemoIdentity { :>> providedId = "EXT-AADL-C-090"; }
145
- attribute :>> name = "NoCounterpartNote";
124
+ @MemoIdentity { :>> providedId = "EXT-AADL-C-090"; :>> label = "NoCounterpartNote"; }
146
125
  attribute :>> ruleExpression = "no correspondence: AADL `subprogram`, `device`, `abstract`; MEMO's five assurance disciplines";
147
- attribute :>> description = "Recorded so the gap is a stated boundary of the profile rather than an omission a reader has to discover.";
126
+ doc /* Recorded so the gap is a stated boundary of the profile rather than an omission a reader has to discover. */
148
127
  }
149
128
  }
@@ -7,7 +7,7 @@
7
7
  # (`type`, `extends`, `usage`, `ontologies`, `methodology`, `modules`) were
8
8
  # removed at the native semantic flip and are now rejected if present.
9
9
  name: '@memoarchitect/example-extension-clinical'
10
- version: 0.6.1
10
+ version: 0.15.1
11
11
  description: Example methodology extension for clinical-procedure vocabulary
12
12
  license: MIT
13
13
  tags:
@@ -1,3 +1,5 @@
1
+ // The clinical extension's public facade: it publicly imports every package
2
+ // the extension ships, so importing it brings in the whole extension.
1
3
  package memo_extension_clinical {
2
4
  public import memo_extension_clinical_procedures::*;
3
5
  }
@@ -7,7 +7,7 @@
7
7
  # (`type`, `extends`, `usage`, `ontologies`, `methodology`, `modules`) were
8
8
  # removed at the native semantic flip and are now rejected if present.
9
9
  name: '@memoarchitect/extension-cloud'
10
- version: 0.13.2
10
+ version: 0.15.1
11
11
  description: Networked services and managed data stores
12
12
  license: MIT
13
13
  tags:
@@ -7,7 +7,7 @@
7
7
  # (`type`, `extends`, `usage`, `ontologies`, `methodology`, `modules`) were
8
8
  # removed at the native semantic flip and are now rejected if present.
9
9
  name: '@memoarchitect/extension-container'
10
- version: 0.13.2
10
+ version: 0.15.1
11
11
  description: OCI container images and container runtimes as deployment content
12
12
  license: MIT
13
13
  tags:
@@ -7,7 +7,7 @@
7
7
  # (`type`, `extends`, `usage`, `ontologies`, `methodology`, `modules`) were
8
8
  # removed at the native semantic flip and are now rejected if present.
9
9
  name: '@memoarchitect/extension-messaging'
10
- version: 0.13.2
10
+ version: 0.15.1
11
11
  description: Publish/subscribe messaging — topics, brokers, and delivery semantics
12
12
  license: MIT
13
13
  tags:
@@ -28,7 +28,7 @@ package memo_extension_messaging {
28
28
  // Message/payload definition. A named topic is an item usage of a concrete
29
29
  // message definition; the definition states the schema, while the usage
30
30
  // supplies the deployed topic identity.
31
- item def MessagingMessage specializes SoftwareItem {
31
+ item def MessagingMessage specializes DataItem {
32
32
  attribute messageSchema : String;
33
33
  }
34
34
 
@@ -52,7 +52,7 @@ package memo_extension_messaging {
52
52
  interface def MessagingTopicInterface specializes SoftwareInterface {
53
53
  end publisher : MessagingPublisher :>> source;
54
54
  end subscriber : MessagingSubscriber :>> target;
55
- flow of MessagingMessage from publisher.payload to subscriber.payload;
55
+ flow messagingMessageFlow of MessagingMessage from publisher.payload to subscriber.payload;
56
56
  }
57
57
 
58
58
  part def MessagingBroker specializes SoftwareComponent {
@@ -7,7 +7,7 @@
7
7
  # (`type`, `extends`, `usage`, `ontologies`, `methodology`, `modules`) were
8
8
  # removed at the native semantic flip and are now rejected if present.
9
9
  name: '@memoarchitect/extension-ros'
10
- version: 0.13.2
10
+ version: 0.15.1
11
11
  description: ROS 2 nodes, messages, topic/service/action interfaces, QoS, and containerized deployment
12
12
  license: MIT
13
13
  tags: